feat(BT·신설): 조직 신설 Phase 1 — git 저장소 교체 + 중앙 저장소 A안 분리

PD님 2026-04-21 직접 지시 5개 중 1·2·4 이행.

## 집행 내역
1. git remote: NerdNavisAi.git → BurningTimesAi.git 교체 (BT main + 본 worktree)
   - E:/NerdNavisAi 레포 원격은 원상 유지 (실측 확인)
2. 중앙 저장소 A안 분리: ~/.claude/burningtimes-{live,memory,audit}/
   - nerdnavis-* 중앙 저장소에서 cp -r 복사 (원본 미변경)
   - .junction-marker 내용 BT로 갱신
3. 본 worktree .live junction 재연결 → burningtimes-live
4. audit junction 3종 신설: .burningtimes_{auditor_calls,warning_ignored,bypass_log}
5. scripts·setup 28파일 하드코딩 일괄 치환 (nerdnavis/NerdNavis/너드나비스/NERDNAVIS → burningtimes/BurningTimes/BURNINGTIMES)
6. paths.local.json.template BT 전용 재작성 (Unity·Framework 경로 __TBD__ placeholder)
7. .gitignore: .live.bak_*/ 패턴 추가

## 보류 항목 (PD 재논의 예정)
- 3. memory/org/ 내용 초기화 (PD 지시)
- 5. Unity 프로젝트 경로 (PD 신규 경로 제공 전까지)
- SKILL.md·CLAUDE.md 조직명 전환 및 P17·P29 처리
- 프로젝트/수상한잡화점/ 등 수상한잡화점 관련 일괄 정리
- 코어코드/NerdNavis.Framework/ → BT-프레임워크 이름 전환
- 공유/조직공지/ 너드나비스 맥락 공지 처리
- .claude/agents/*.md frontmatter skills 참조명

## 감사
pm-auditor 사전 감사 통과 (Critical 0건, Major 2건 commit 전 정정 완료).
매니페스트: bt-org-split-phase1 (C35-9 PreToolUse 차단 해제).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
깃 관리자 2026-04-21 00:14:51 +09:00
parent 8de90029c4
commit 4911b7485a
29 changed files with 123 additions and 122 deletions

View File

@ -1,5 +1,5 @@
{
"_description": "너드나비스 조직 공용 Claude Code permission + hook 설정 (SOT). PD님 일괄 승인 원칙 + 자동 동기화 hook. 단일 세션 + Agent 병렬 호출 구조. 모든 PC 동일 적용. 루트 단일 관리.",
"_description": "BurningTimes 조직 공용 Claude Code permission + hook 설정 (SOT). PD님 일괄 승인 원칙 + 자동 동기화 hook. 단일 세션 + Agent 병렬 호출 구조. 모든 PC 동일 적용. 루트 단일 관리.",
"permissions": {
"defaultMode": "acceptEdits",
"allow": [

1
.gitignore vendored
View File

@ -108,4 +108,5 @@ build/
.live/*
!.live/README.md
.live.bak-*/
.live.bak_*/

View File

@ -1,17 +1,17 @@
{
"_description": "환경별 로컬 경로 설정 템플릿. 이 파일을 paths.local.json으로 복사 후 실값 입력. 실값 파일은 .gitignore로 커밋 금지.",
"_hostname_example": "NERDNAVIS-MAIN-PC | HOME-PC | LAPTOP-01",
"_hostname_example": "BURNINGTIMES-MAIN-PC | HOME-PC | LAPTOP-01",
"NERDNAVIS_ROOT": "C:/Users/PC/Documents/너드나비스",
"UNITY_PROJECT_ROOT": "D:/NerdNavis/FilGoodBandits/DeckBuilding",
"FRAMEWORK_PKG_ROOT": "D:/NerdNavis/NerdNavis.Framework",
"BURNINGTIMES_ROOT": "E:/BurningTimes",
"UNITY_PROJECT_ROOT": "__TBD_PD_WILL_PROVIDE__",
"FRAMEWORK_PKG_ROOT": "__TBD_BT_Framework_경로__",
"TABLE_EXPORT_ROOT": "${UNITY_PROJECT_ROOT}/Assets/ResWork/Table/Export",
"GITEA_URL": "https://burning.i234.me",
"GITEA_SSH": "ssh://git@burning.i234.me:30030",
"GIT_REMOTE": "https://burning.i234.me/NerdNavis_AiDev/BurningTimesAi.git",
"_per_pc_hint": {
"회사_PC": "D 드라이브 Unity, C 드라이브 org",
"집_PC": "E 드라이브 Unity 예시",
"노트북": "C 드라이브 통합 예시"
"Unity_경로_보류": "PD님이 BT 전용 Unity 프로젝트 경로 제공 전까지 UNITY_PROJECT_ROOT·TABLE_EXPORT_ROOT 사용 금지",
"Framework": "BT-프레임워크(구 NerdNavis.Framework 계승) 경로는 별도 안건으로 확정 후 기입"
}
}

View File

@ -3,20 +3,20 @@
# 2026-04-20 #48 G 집행 신설 — PD님 직접 지시 "어떤 PC에서도 일관 상태 동시화"
# 관련 규칙: C34-17 audit 특수 조항 · C36 PM 재량 상한 · 헌법 제1원칙 ⑤
CENTRAL_AUDIT="$HOME/.claude/nerdnavis-audit"
CENTRAL_AUDIT="$HOME/.claude/burningtimes-audit"
MARKER_NAME=".junction-marker"
# 디렉토리 매핑: 로컬 디렉토리명(점 제외) | 중앙 하위 디렉토리명
MAPPINGS=(
"nerdnavis_auditor_calls|auditor_calls"
"nerdnavis_warning_ignored|warning_ignored"
"nerdnavis_bypass_log|bypass_log"
"burningtimes_auditor_calls|auditor_calls"
"burningtimes_warning_ignored|warning_ignored"
"burningtimes_bypass_log|bypass_log"
)
# 1. 중앙 저장소 최상위 + marker 보장
mkdir -p "$CENTRAL_AUDIT" 2>/dev/null
if [ ! -f "$CENTRAL_AUDIT/$MARKER_NAME" ]; then
echo "nerdnavis-audit central junction target (C34-17, 2026-04-20 #48 G)" > "$CENTRAL_AUDIT/$MARKER_NAME" 2>/dev/null
echo "burningtimes-audit central junction target (C34-17, 2026-04-20 #48 G)" > "$CENTRAL_AUDIT/$MARKER_NAME" 2>/dev/null
fi
# 2. 각 매핑 처리
@ -29,7 +29,7 @@ for MAPPING in "${MAPPINGS[@]}"; do
# 중앙 하위 디렉토리 + sub marker 보장
mkdir -p "$CENTRAL_DIR" 2>/dev/null
if [ ! -f "$CENTRAL_DIR/$MARKER_NAME" ]; then
echo "nerdnavis-audit/$CENTRAL_SUB junction target (C34-17)" > "$CENTRAL_DIR/$MARKER_NAME" 2>/dev/null
echo "burningtimes-audit/$CENTRAL_SUB junction target (C34-17)" > "$CENTRAL_DIR/$MARKER_NAME" 2>/dev/null
fi
# sentinel 판정: 로컬에서 marker 접근 가능하면 이미 연결 완료

View File

@ -6,9 +6,9 @@
REPO_ROOT=$(git rev-parse --show-toplevel 2>/dev/null)
[ -z "$REPO_ROOT" ] && exit 0
CALL_DIR="$HOME/.claude/.nerdnavis_auditor_calls"
WARN_DIR="$HOME/.claude/.nerdnavis_warning_ignored"
BYPASS_DIR="$HOME/.claude/.nerdnavis_bypass_log"
CALL_DIR="$HOME/.claude/.burningtimes_auditor_calls"
WARN_DIR="$HOME/.claude/.burningtimes_warning_ignored"
BYPASS_DIR="$HOME/.claude/.burningtimes_bypass_log"
# 미해소 경고 건수 집계 (UNRESOLVED - RESOLVED)
UNRESOLVED_NET=0

View File

@ -11,7 +11,7 @@ if ! echo "$INPUT" | grep -q '"subagent_type"[[:space:]]*:[[:space:]]*"pm-audito
exit 0
fi
LOG_DIR="$HOME/.claude/.nerdnavis_auditor_calls"
LOG_DIR="$HOME/.claude/.burningtimes_auditor_calls"
mkdir -p "$LOG_DIR" 2>/dev/null
# 일자별 로그 파일에 호출 시각 기록
@ -19,7 +19,7 @@ LOG_FILE="$LOG_DIR/$(date +%Y-%m-%d).log"
echo "$(date +%Y-%m-%d_%H:%M:%S) pm-auditor called" >> "$LOG_FILE"
# 경고 무시 사례 해소 처리 — 기존 UNRESOLVED 로그에 RESOLVED 마커 append
WARNING_DIR="$HOME/.claude/.nerdnavis_warning_ignored"
WARNING_DIR="$HOME/.claude/.burningtimes_warning_ignored"
if [ -d "$WARNING_DIR" ]; then
for wf in "$WARNING_DIR"/*.log; do
[ -f "$wf" ] || continue

View File

@ -35,7 +35,7 @@ fi
# (BYPASS는 기존 PostToolUse 경고 메커니즘 전용, 본 차단은 무조건 체크)
# 5. 활성 매니페스트 존재 확인
MANIFEST_DIR="$HOME/.claude/nerdnavis-audit/manifest/active"
MANIFEST_DIR="$HOME/.claude/burningtimes-audit/manifest/active"
mkdir -p "$MANIFEST_DIR" 2>/dev/null
ACTIVE=$(ls -t "$MANIFEST_DIR"/*.md 2>/dev/null | head -1)

View File

@ -2,7 +2,7 @@
# SessionStart hook용 — 마지막 확인 이후 변경 요약 출력
# 세션 간 소통 부재(문제 2) 해소: 커밋 메시지 자체가 소통 채널 역할
THROTTLE_DIR="$HOME/.claude/.nerdnavis_throttle"
THROTTLE_DIR="$HOME/.claude/.burningtimes_throttle"
mkdir -p "$THROTTLE_DIR" 2>/dev/null
GIT_DIR=$(git rev-parse --git-dir 2>/dev/null)

View File

@ -7,7 +7,7 @@
# 주 동기화는 scripts/sync_signal.sh (로컬 IPC 시그널) 담당. 본 스크립트는
# 시그널이 없거나 다른 PC에서 push된 경우를 위한 fallback.
THROTTLE_DIR="$HOME/.claude/.nerdnavis_throttle"
THROTTLE_DIR="$HOME/.claude/.burningtimes_throttle"
mkdir -p "$THROTTLE_DIR" 2>/dev/null
GIT_DIR=$(git rev-parse --git-dir 2>/dev/null)

View File

@ -6,7 +6,7 @@
REPO_ROOT=$(git rev-parse --show-toplevel 2>/dev/null)
[ -z "$REPO_ROOT" ] && exit 0
THROTTLE_DIR="$HOME/.claude/.nerdnavis_throttle"
THROTTLE_DIR="$HOME/.claude/.burningtimes_throttle"
mkdir -p "$THROTTLE_DIR" 2>/dev/null
HOLD_HASH_FILE="$THROTTLE_DIR/hold_files_hash"

View File

@ -9,7 +9,7 @@ REPO_ROOT=$(git rev-parse --show-toplevel 2>/dev/null)
LIVE_DIR="$REPO_ROOT/.live"
[ ! -d "$LIVE_DIR" ] && exit 0
THROTTLE_DIR="$HOME/.claude/.nerdnavis_throttle"
THROTTLE_DIR="$HOME/.claude/.burningtimes_throttle"
mkdir -p "$THROTTLE_DIR" 2>/dev/null
OUTPUT=""

View File

@ -1,5 +1,5 @@
#!/bin/bash
# SessionStart hook — .live/ 디렉토리를 $HOME/.claude/nerdnavis-live/로 junction 보장
# SessionStart hook — .live/ 디렉토리를 $HOME/.claude/burningtimes-live/로 junction 보장
# worktree 격리를 제거하여 모든 세션이 동일한 실제 .live/ 디렉토리를 공유한다.
# 2026-04-18 신설 — C34 헌법급 Live 증분 동기화 체계의 근원 해결 장치
# 관련 규칙: C34 · C16-1 PC 독립 셋업 · 헌법 제1원칙 ⑤ 세션·PC 연속성
@ -7,14 +7,14 @@
REPO_ROOT=$(git rev-parse --show-toplevel 2>/dev/null)
[ -z "$REPO_ROOT" ] && exit 0
CENTRAL_LIVE="$HOME/.claude/nerdnavis-live"
CENTRAL_LIVE="$HOME/.claude/burningtimes-live"
LOCAL_LIVE="$REPO_ROOT/.live"
MARKER_NAME=".junction-marker"
# 1. 중앙 저장소 + marker 보장
mkdir -p "$CENTRAL_LIVE" 2>/dev/null
if [ ! -f "$CENTRAL_LIVE/$MARKER_NAME" ]; then
echo "nerdnavis-live central junction target (C34, 2026-04-18)" > "$CENTRAL_LIVE/$MARKER_NAME" 2>/dev/null
echo "burningtimes-live central junction target (C34, 2026-04-18)" > "$CENTRAL_LIVE/$MARKER_NAME" 2>/dev/null
fi
# 2. 이미 올바르게 junction 연결되어 있으면 조기 종료 (sentinel 경유 판정)

View File

@ -9,7 +9,7 @@ REPO_ROOT=$(git rev-parse --show-toplevel 2>/dev/null)
LIVE_DIR="$REPO_ROOT/.live"
[ ! -d "$LIVE_DIR" ] && exit 0
THROTTLE_DIR="$HOME/.claude/.nerdnavis_throttle"
THROTTLE_DIR="$HOME/.claude/.burningtimes_throttle"
mkdir -p "$THROTTLE_DIR" 2>/dev/null
OUTPUT=""

View File

@ -3,7 +3,7 @@
# C35-9 Layer 3 근본 해결 2026-04-20
# M-1 수용: commit diff vs manifest target_files cross-check (부분집합 감지)
MANIFEST_DIR="$HOME/.claude/nerdnavis-audit/manifest"
MANIFEST_DIR="$HOME/.claude/burningtimes-audit/manifest"
ACTIVE_DIR="$MANIFEST_DIR/active"
ARCHIVED_DIR="$MANIFEST_DIR/archived"

View File

@ -20,7 +20,7 @@ EOF
exit 1
fi
MANIFEST_DIR="$HOME/.claude/nerdnavis-audit/manifest/active"
MANIFEST_DIR="$HOME/.claude/burningtimes-audit/manifest/active"
mkdir -p "$MANIFEST_DIR" 2>/dev/null
MANIFEST="$MANIFEST_DIR/$PLAN_ID.md"

View File

@ -224,7 +224,7 @@ while (i < lines.length) {
}
const doc = new Document({
creator: '너드나비스 개발팀',
creator: 'BurningTimes 개발팀',
title: '인간 서버 개발자 업무 지시서 — 수상한잡화점',
styles: {
default: { document: { run: { font: FONT, size: 22 } } },

View File

@ -1,5 +1,5 @@
#!/bin/bash
# SessionStart hook — memory/org junction을 $HOME/.claude/nerdnavis-memory/로 보장
# SessionStart hook — memory/org junction을 $HOME/.claude/burningtimes-memory/로 보장
# Claude user memory 경로(`$HOME/.claude/projects/*/memory`)의 모든 worktree 해시 폴더를
# 중앙 저장소로 연결하여 worktree 경계 무관 조직 기억 실시간 공유 보장.
# 2026-04-19 신설 — C34 확장 (P25 승격 + memory/org/ 편입)
@ -8,10 +8,10 @@
REPO_ROOT=$(git rev-parse --show-toplevel 2>/dev/null)
[ -z "$REPO_ROOT" ] && exit 0
CENTRAL_MEM="$HOME/.claude/nerdnavis-memory"
CENTRAL_MEM="$HOME/.claude/burningtimes-memory"
MARKER_NAME=".memory-junction-marker"
CLAUDE_PROJECTS="$HOME/.claude/projects"
LOCK_FILE="$HOME/.claude/.nerdnavis_memory_junction.lock"
LOCK_FILE="$HOME/.claude/.burningtimes_memory_junction.lock"
# 0. Lock (race condition 방지, 동시 세션 시작 시 junction 중복 시도 차단)
ATTEMPT=0
@ -25,19 +25,19 @@ trap 'rm -f "$LOCK_FILE"' EXIT
# 1. 중앙 저장소 + marker 보장
mkdir -p "$CENTRAL_MEM" 2>/dev/null
if [ ! -f "$CENTRAL_MEM/$MARKER_NAME" ]; then
echo "nerdnavis-memory central junction target (C34-16, 2026-04-19)" > "$CENTRAL_MEM/$MARKER_NAME" 2>/dev/null
echo "burningtimes-memory central junction target (C34-16, 2026-04-19)" > "$CENTRAL_MEM/$MARKER_NAME" 2>/dev/null
fi
# 2. Claude projects base 부재 시 조기 종료 (Claude Code 첫 실행 전 PC)
[ ! -d "$CLAUDE_PROJECTS" ] && exit 0
# 3. E--NerdNavisAi* 패턴 해시 폴더 순회 (루트·worktree 모두 포괄)
# 3. E--BurningTimesAi* 패턴 해시 폴더 순회 (루트·worktree 모두 포괄)
RECONNECTED=0
CREATED=0
SKIPPED=0
FAILED=0
for hash_dir in "$CLAUDE_PROJECTS"/E--NerdNavisAi*; do
for hash_dir in "$CLAUDE_PROJECTS"/E--BurningTimesAi*; do
[ -d "$hash_dir" ] || continue
mem_link="$hash_dir/memory"

View File

@ -1,13 +1,13 @@
#!/bin/bash
# ─────────────────────────────────────────────────────────────
# NerdNavis — NAS git 서버측 post-receive hook
# BurningTimes — NAS git 서버측 post-receive hook
# Phase 3 (2026-04-15 PD님 승인)
#
# 목적: git push 도달 즉시 Discord 채널로 실시간 알림 발송
# → 부서 세션이 구동되지 않은 상태에서도 PD님·PM·부서가 push 이벤트를 즉시 인지
#
# 배치 위치: <NAS bare repo 경로>/hooks/post-receive
# 예: /volume1/git-repos/NerdNavisAi.git/hooks/post-receive
# 예: /volume1/git-repos/BurningTimesAi.git/hooks/post-receive
# 배치 후: chmod +x post-receive
#
# 환경변수 파일: 같은 hooks/ 디렉토리에 post-receive-env 파일 생성 후 다음 변수 정의
@ -52,7 +52,7 @@ send_discord() {
"title": "$TITLE",
"description": "$DESC",
"color": $COLOR,
"footer": {"text": "너드나비스 git server · post-receive"}
"footer": {"text": "BurningTimes git server · post-receive"}
}]
}
EOF

View File

@ -3,7 +3,7 @@
# Junction 해제 + 중앙 백업 + 레포 memory/org/ 원본 복구
# 2026-04-19 신설 — C34 집행 실패 시 사용 (C6-1 롤백 경로 확보 의무)
CENTRAL_MEM="$HOME/.claude/nerdnavis-memory"
CENTRAL_MEM="$HOME/.claude/burningtimes-memory"
CLAUDE_PROJECTS="$HOME/.claude/projects"
echo "=== memory 중앙화 롤백 시작 ==="
@ -17,7 +17,7 @@ fi
# 2. 모든 worktree 해시 폴더의 user memory junction 제거
REMOVED=0
for hash_dir in "$CLAUDE_PROJECTS"/E--NerdNavisAi*; do
for hash_dir in "$CLAUDE_PROJECTS"/E--BurningTimesAi*; do
[ -d "$hash_dir" ] || continue
mem_link="$hash_dir/memory"
[ -e "$mem_link" ] || [ -L "$mem_link" ] || continue

View File

@ -29,7 +29,7 @@ if [ "$TODAY_COMMITS" -gt 0 ]; then
NEEDS_CORE=1
fi
# 조직 룰(SKILL.md·C·P) 변경도 코어프레임워크 차기 활용 영향
if echo "$CHANGED_FILES" | grep -qE "^\.claude/skills/너드나비스-코어룰/|^공유/인계서/"; then
if echo "$CHANGED_FILES" | grep -qE "^\.claude/skills/BurningTimes-코어룰/|^공유/인계서/"; then
NEEDS_CORE=1
fi

View File

@ -6,7 +6,7 @@
REPO_ROOT=$(git rev-parse --show-toplevel 2>/dev/null)
[ -z "$REPO_ROOT" ] && exit 0
CENTRAL_AUDIT="$HOME/.claude/nerdnavis-audit"
CENTRAL_AUDIT="$HOME/.claude/burningtimes-audit"
[ ! -d "$CENTRAL_AUDIT" ] && exit 0
HOSTNAME_TAG=$(hostname 2>/dev/null | tr -d '[:space:]' | tr -cd '[:alnum:]-_' | head -c 32)

View File

@ -9,7 +9,7 @@ REPO_ROOT=$(git rev-parse --show-toplevel 2>/dev/null)
REPO_AUDIT="$REPO_ROOT/memory/org/audit_logs"
[ ! -d "$REPO_AUDIT" ] && exit 0
CENTRAL_AUDIT="$HOME/.claude/nerdnavis-audit"
CENTRAL_AUDIT="$HOME/.claude/burningtimes-audit"
[ ! -d "$CENTRAL_AUDIT" ] && exit 0
HOSTNAME_TAG=$(hostname 2>/dev/null | tr -d '[:space:]' | tr -cd '[:alnum:]-_' | head -c 32)

View File

@ -1,5 +1,5 @@
#!/bin/bash
# post-commit hook — 중앙 $HOME/.claude/nerdnavis-memory/ → 레포 memory/org/ 단방향 sync
# post-commit hook — 중앙 $HOME/.claude/burningtimes-memory/ → 레포 memory/org/ 단방향 sync
# Claude user memory에 Write된 내용을 commit 포함시키기 위해 commit 직후 레포로 반영.
# 2026-04-19 신설 — C34-3 동기화 4계층 (commit 최신본 보장)
@ -7,9 +7,9 @@ REPO_ROOT=$(git rev-parse --show-toplevel 2>/dev/null)
[ -z "$REPO_ROOT" ] && exit 0
REPO_MEM="$REPO_ROOT/memory/org"
CENTRAL_MEM="$HOME/.claude/nerdnavis-memory"
CENTRAL_MEM="$HOME/.claude/burningtimes-memory"
MARKER_NAME=".memory-junction-marker"
LOCK_FILE="$HOME/.claude/.nerdnavis_memory_sync.lock"
LOCK_FILE="$HOME/.claude/.burningtimes_memory_sync.lock"
[ ! -d "$CENTRAL_MEM" ] && exit 0
[ ! -d "$REPO_MEM" ] && exit 0

View File

@ -1,5 +1,5 @@
#!/bin/bash
# SessionStart hook — 레포 memory/org/ → 중앙 $HOME/.claude/nerdnavis-memory/ 단방향 sync
# SessionStart hook — 레포 memory/org/ → 중앙 $HOME/.claude/burningtimes-memory/ 단방향 sync
# git pull 직후 원격 반영분을 중앙에 최신화. unflushed 중앙 변경은 대피 백업.
# 2026-04-19 신설 — C34-3 동기화 4계층 (레포 SOT 원칙)
@ -7,9 +7,9 @@ REPO_ROOT=$(git rev-parse --show-toplevel 2>/dev/null)
[ -z "$REPO_ROOT" ] && exit 0
REPO_MEM="$REPO_ROOT/memory/org"
CENTRAL_MEM="$HOME/.claude/nerdnavis-memory"
CENTRAL_MEM="$HOME/.claude/burningtimes-memory"
MARKER_NAME=".memory-junction-marker"
LOCK_FILE="$HOME/.claude/.nerdnavis_memory_sync.lock"
LOCK_FILE="$HOME/.claude/.burningtimes_memory_sync.lock"
[ ! -d "$REPO_MEM" ] && exit 0
@ -24,7 +24,7 @@ trap 'rm -f "$LOCK_FILE"' EXIT
# 1. 중앙 저장소 보장
mkdir -p "$CENTRAL_MEM" 2>/dev/null
[ ! -f "$CENTRAL_MEM/$MARKER_NAME" ] && echo "nerdnavis-memory central (C34-16, 2026-04-19)" > "$CENTRAL_MEM/$MARKER_NAME"
[ ! -f "$CENTRAL_MEM/$MARKER_NAME" ] && echo "burningtimes-memory central (C34-16, 2026-04-19)" > "$CENTRAL_MEM/$MARKER_NAME"
# 2. unflushed 중앙 변경 탐지 (중앙 mtime > 레포 mtime + HEAD 미반영 의심)
CONFLICT_COUNT=0

View File

@ -10,7 +10,7 @@
# bash sync_signal.sh update # push 성공 시 호출: 플래그 파일 갱신
# bash sync_signal.sh check # UserPromptSubmit hook: 플래그 변경 시 pull
BUS_DIR="$HOME/.claude/.nerdnavis_bus"
BUS_DIR="$HOME/.claude/.burningtimes_bus"
mkdir -p "$BUS_DIR" 2>/dev/null
GIT_DIR=$(git rev-parse --git-dir 2>/dev/null)

View File

@ -8,7 +8,7 @@
set +e # Degraded 운영 — 실패 시 exit 0 보장
# Lock 파일 (race 방지)
LOCK_FILE="$HOME/.claude/.nerdnavis_unity_sync.lock"
LOCK_FILE="$HOME/.claude/.burningtimes_unity_sync.lock"
LOCK_STALE_SECONDS=300 # 5분 이상 lock = stale
# Stale lock cleanup (trap 이전)

View File

@ -1,4 +1,4 @@
# 너드나비스 조직 레포 - 신 PC 셋팅 검증 스크립트 (Windows / PowerShell)
# BurningTimes 조직 레포 - 신 PC 셋팅 검증 스크립트 (Windows / PowerShell)
#
# 목적: `setup/setup_windows.ps1` 실행 후, 본 PC가 조직 레포를 정상 사용할 수 있는 상태인지
# 파일 존재·OS 동작(reparse point)·실행 결과(JSON 파싱) 3축으로 검증.
@ -31,7 +31,7 @@ function Warn([string]$name, [string]$detail) {
$script:warn += "$name :: $detail"
}
Write-Host "=== 너드나비스 셋팅 검증 ==="
Write-Host "=== BurningTimes 셋팅 검증 ==="
Write-Host "RepoRoot: $repoRoot"
Write-Host ""
@ -65,7 +65,7 @@ if (Test-Path $pathsFile) {
Check "paths.local.json 존재" $false "파일 없음(메인 레포도). setup_windows.ps1 선행 필요: $pathsFile"
}
$required = @("NERDNAVIS_ROOT","UNITY_PROJECT_ROOT","FRAMEWORK_PKG_ROOT","TABLE_EXPORT_ROOT")
$required = @("BURNINGTIMES_ROOT","UNITY_PROJECT_ROOT","FRAMEWORK_PKG_ROOT","TABLE_EXPORT_ROOT")
if ($paths) {
foreach ($k in $required) {
$v = $paths.$k
@ -73,9 +73,9 @@ if ($paths) {
Check "paths.local.json 키 [$k]" $ok ("값=" + ($v -as [string]))
}
# NERDNAVIS_ROOT 실제 디렉토리 존재 여부
if ($paths.NERDNAVIS_ROOT) {
Check "NERDNAVIS_ROOT 디렉토리 존재" (Test-Path $paths.NERDNAVIS_ROOT) $paths.NERDNAVIS_ROOT
# BURNINGTIMES_ROOT 실제 디렉토리 존재 여부
if ($paths.BURNINGTIMES_ROOT) {
Check "BURNINGTIMES_ROOT 디렉토리 존재" (Test-Path $paths.BURNINGTIMES_ROOT) $paths.BURNINGTIMES_ROOT
}
# Unity·Framework·TableExport는 경고 수준 (존재하지 않아도 일부 작업은 가능)
foreach ($k in @("UNITY_PROJECT_ROOT","FRAMEWORK_PKG_ROOT","TABLE_EXPORT_ROOT")) {
@ -137,7 +137,7 @@ if (Test-Path $claudeMemoryBase) {
# 2.5. Live 증분 동기화 Junction 3축 검증 (C34, 2026-04-18 신설)
# 축 1: 중앙 저장소 실체 / 축 2: reparse point / 축 3: marker 경유 읽기
$centralLive = Join-Path $env:USERPROFILE ".claude\nerdnavis-live"
$centralLive = Join-Path $env:USERPROFILE ".claude\burningtimes-live"
$localLive = Join-Path $repoRoot ".live"
$markerName = ".junction-marker"
@ -159,7 +159,7 @@ if (Test-Path $localLive) {
}
# 2.6. memory/org/ 중앙 저장소 + Junction 3축 검증 (C34-16, 2026-04-19 신설)
$centralMemory = Join-Path $env:USERPROFILE ".claude\nerdnavis-memory"
$centralMemory = Join-Path $env:USERPROFILE ".claude\burningtimes-memory"
$memoryMarker = ".memory-junction-marker"
Check "memory 중앙 저장소 실체 존재" (Test-Path $centralMemory) $centralMemory
@ -169,7 +169,7 @@ if (Test-Path $claudeMemoryBase) {
$repoRootCount = 0
$otherCount = 0
foreach ($d in (Get-ChildItem $claudeMemoryBase -Directory -ErrorAction SilentlyContinue | Where-Object { $_.Name -like "E--NerdNavisAi*" })) {
foreach ($d in (Get-ChildItem $claudeMemoryBase -Directory -ErrorAction SilentlyContinue | Where-Object { $_.Name -like "E--BurningTimesAi*" })) {
$memLink = Join-Path $d.FullName "memory"
if (Test-Path (Join-Path $memLink $memoryMarker)) {
$centralCount += 1
@ -189,14 +189,14 @@ if (Test-Path $claudeMemoryBase) {
}
# unflushed 중앙 대피본 감지
$conflictDirs = Get-ChildItem "$env:USERPROFILE\.claude" -Directory -Filter "nerdnavis-memory.conflict-*" -ErrorAction SilentlyContinue
$conflictDirs = Get-ChildItem "$env:USERPROFILE\.claude" -Directory -Filter "burningtimes-memory.conflict-*" -ErrorAction SilentlyContinue
if ($conflictDirs.Count -gt 0) {
Warn "memory unflushed 중앙 대피본 잔류" "$($conflictDirs.Count) 건 — 수동 병합 후 정리 필요: $($conflictDirs[0].FullName)"
}
}
# 2.7. audit 중앙 저장소 + Junction 3종 검증 (C34-17, 2026-04-20 #48 I-1 부분 집행 — verify_setup 2.7 단독)
$centralAudit = Join-Path $env:USERPROFILE ".claude\nerdnavis-audit"
$centralAudit = Join-Path $env:USERPROFILE ".claude\burningtimes-audit"
$auditMarker = ".junction-marker"
Check "audit 중앙 저장소 실체 존재" (Test-Path $centralAudit) $centralAudit
@ -223,11 +223,11 @@ if (Test-Path $centralAudit) {
Warn "audit 중앙 하위 marker 결손" "정상 $subOk/3 — 부재: $($subMissing -join ', ') — audit_junction_ensure.sh 재실행 필요"
}
# Junction 연결 검증 ($HOME/.claude/.nerdnavis_* → 중앙 하위)
# Junction 연결 검증 ($HOME/.claude/.burningtimes_* → 중앙 하위)
$junctionMap = @{
".nerdnavis_auditor_calls" = "auditor_calls"
".nerdnavis_warning_ignored" = "warning_ignored"
".nerdnavis_bypass_log" = "bypass_log"
".burningtimes_auditor_calls" = "auditor_calls"
".burningtimes_warning_ignored" = "warning_ignored"
".burningtimes_bypass_log" = "bypass_log"
}
$linkedCount = 0
$unlinkedList = @()
@ -251,7 +251,7 @@ if (Test-Path $centralAudit) {
}
# 3. 경로 추상화 적용 여부 (CLAUDE.md 계열에 구 하드코딩 경로 잔존 확인)
$hardcodePatterns = @("C:/Users/PC/Documents", "D:/NerdNavis/FilGoodBandits", "D:/NerdNavis/NerdNavis.Framework")
$hardcodePatterns = @("C:/Users/PC/Documents", "D:/BurningTimes/FilGoodBandits", "D:/BurningTimes/BurningTimes.Framework")
$scanTargets = @(
(Join-Path $repoRoot "CLAUDE.md"),
(Join-Path $repoRoot ".claude\skills")

View File

@ -1,29 +1,29 @@
#!/bin/bash
# 너드나비스 조직 레포 - macOS / Linux 셋업
# BurningTimes 조직 레포 - macOS / Linux 셋업
# 사용: bash setup_macos.sh
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
NERDNAVIS_ROOT="${NERDNAVIS_ROOT:-$(cd "$SCRIPT_DIR/.." && pwd)}"
BURNINGTIMES_ROOT="${BURNINGTIMES_ROOT:-$(cd "$SCRIPT_DIR/.." && pwd)}"
UNITY_ROOT="${UNITY_ROOT:-$HOME/dev/DeckBuilding}"
FRAMEWORK_ROOT="${FRAMEWORK_ROOT:-$HOME/dev/NerdNavis.Framework}"
FRAMEWORK_ROOT="${FRAMEWORK_ROOT:-$HOME/dev/BurningTimes.Framework}"
GITEA_URL="${GITEA_URL:-https://burning.i234.me}"
GITEA_SSH="${GITEA_SSH:-ssh://git@burning.i234.me:30030}"
echo "=== 너드나비스 조직 레포 셋업 ==="
echo "NERDNAVIS_ROOT: $NERDNAVIS_ROOT"
echo "=== BurningTimes 조직 레포 셋업 ==="
echo "BURNINGTIMES_ROOT: $BURNINGTIMES_ROOT"
# 1. git 확인
command -v git >/dev/null 2>&1 || { echo "git 필요"; exit 1; }
# 2. paths.local.json
PATHS_FILE="$NERDNAVIS_ROOT/paths.local.json"
PATHS_FILE="$BURNINGTIMES_ROOT/paths.local.json"
if [ ! -f "$PATHS_FILE" ]; then
cat > "$PATHS_FILE" <<EOF
{
"_description": "로컬 환경 경로. 커밋 금지.",
"NERDNAVIS_ROOT": "$NERDNAVIS_ROOT",
"BURNINGTIMES_ROOT": "$BURNINGTIMES_ROOT",
"UNITY_PROJECT_ROOT": "$UNITY_ROOT",
"FRAMEWORK_PKG_ROOT": "$FRAMEWORK_ROOT",
"TABLE_EXPORT_ROOT": "$UNITY_ROOT/Assets/ResWork/Table/Export",
@ -38,12 +38,12 @@ echo "paths.local.json 이미 존재. 유지."
fi
# 3. 메모리 symlink
ORG_MEM="$NERDNAVIS_ROOT/memory/org"
ORG_MEM="$BURNINGTIMES_ROOT/memory/org"
mkdir -p "$ORG_MEM"
CLAUDE_BASE="$HOME/.claude/projects"
if [ -d "$CLAUDE_BASE" ]; then
for d in "$CLAUDE_BASE"/*Documents*/ "$CLAUDE_BASE"/*너드나비스*/; do
for d in "$CLAUDE_BASE"/*Documents*/ "$CLAUDE_BASE"/*BurningTimes*/; do
[ -d "$d" ] || continue
MEM="$d/memory"
if [ -L "$MEM" ]; then
@ -61,14 +61,14 @@ fi
# 3.5. Live 증분 동기화 중앙 저장소 + Symlink (C34, 2026-04-18 PD님 직접 지시)
# worktree 격리로 인한 .live/ 물리 분리 해결을 위해
# $HOME/.claude/nerdnavis-live/ 중앙 디렉토리로 symlink 연결한다.
CENTRAL_LIVE="$HOME/.claude/nerdnavis-live"
LOCAL_LIVE="$NERDNAVIS_ROOT/.live"
# $HOME/.claude/burningtimes-live/ 중앙 디렉토리로 symlink 연결한다.
CENTRAL_LIVE="$HOME/.claude/burningtimes-live"
LOCAL_LIVE="$BURNINGTIMES_ROOT/.live"
MARKER_NAME=".junction-marker"
mkdir -p "$CENTRAL_LIVE"
if [ ! -f "$CENTRAL_LIVE/$MARKER_NAME" ]; then
echo "nerdnavis-live central junction target (C34, 2026-04-18)" > "$CENTRAL_LIVE/$MARKER_NAME"
echo "burningtimes-live central junction target (C34, 2026-04-18)" > "$CENTRAL_LIVE/$MARKER_NAME"
fi
if [ -L "$LOCAL_LIVE" ]; then
@ -89,17 +89,17 @@ else
fi
# 3.6. memory/org/ 중앙 저장소 + Symlink (C34-16, 2026-04-19 신설)
CENTRAL_MEM="$HOME/.claude/nerdnavis-memory"
CENTRAL_MEM="$HOME/.claude/burningtimes-memory"
MEMORY_MARKER=".memory-junction-marker"
mkdir -p "$CENTRAL_MEM"
if [ ! -f "$CENTRAL_MEM/$MEMORY_MARKER" ]; then
echo "nerdnavis-memory central (C34-16, 2026-04-19)" > "$CENTRAL_MEM/$MEMORY_MARKER"
echo "burningtimes-memory central (C34-16, 2026-04-19)" > "$CENTRAL_MEM/$MEMORY_MARKER"
fi
# 초기 sync 레포 → 중앙
if [ -d "$NERDNAVIS_ROOT/memory/org" ]; then
for f in "$NERDNAVIS_ROOT/memory/org"/*.md "$NERDNAVIS_ROOT/memory/org"/*.json; do
if [ -d "$BURNINGTIMES_ROOT/memory/org" ]; then
for f in "$BURNINGTIMES_ROOT/memory/org"/*.md "$BURNINGTIMES_ROOT/memory/org"/*.json; do
[ -f "$f" ] || continue
BASENAME=$(basename "$f")
[ ! -f "$CENTRAL_MEM/$BASENAME" ] && cp "$f" "$CENTRAL_MEM/$BASENAME"
@ -108,7 +108,7 @@ fi
# user memory symlink 중앙 재연결
if [ -d "$CLAUDE_BASE" ]; then
for d in "$CLAUDE_BASE"/E--NerdNavisAi*/; do
for d in "$CLAUDE_BASE"/E--BurningTimesAi*/; do
[ -d "$d" ] || continue
mem_link="${d}memory"

View File

@ -1,8 +1,8 @@
# 너드나비스 조직 레포 - Windows PC 셋업
# BurningTimes 조직 레포 - Windows PC 셋업
# 사용: PowerShell에서 실행
# .\setup_windows.ps1 ← 기본 셋업만
# .\setup_windows.ps1 -CreateShortcuts ← 기본 셋업 + 바탕화면 바로가기 3종 생성 (주의 아래)
# .\setup_windows.ps1 -NerdNavisRoot "C:\..." ← 레포 경로 지정
# .\setup_windows.ps1 -BurningTimesRoot "C:\..." ← 레포 경로 지정
# .\setup_windows.ps1 -CreateShortcuts -ClaudeExePath "C:\Tools\claude\claude.exe"
# ← claude.exe 자동 탐지 실패 시 경로 수동 지정
#
@ -14,7 +14,7 @@
# 상세: memory/org/feedback_permissions_portability.md
param(
[string]$NerdNavisRoot = $(Resolve-Path (Join-Path $PSScriptRoot "..")).Path,
[string]$BurningTimesRoot = $(Resolve-Path (Join-Path $PSScriptRoot "..")).Path,
[string]$UnityRoot = "",
[string]$FrameworkRoot = "",
[string]$GiteaUrl = "https://burning.i234.me",
@ -25,14 +25,14 @@ param(
$ErrorActionPreference = "Stop"
# 경로 추정: NerdNavisRoot 드라이브 기반 동적 default (PC별 하드코딩 회피)
# 사용자가 -UnityRoot/-FrameworkRoot 명시하면 그 값 우선, 미명시면 NerdNavisRoot 드라이브의 \NerdNavis\* 패턴으로 추정
$rootDriveLetter = (Split-Path $NerdNavisRoot -Qualifier).TrimEnd(':')
if (-not $UnityRoot) { $UnityRoot = "${rootDriveLetter}:\NerdNavis\FilGoodBandits\DeckBuilding" }
if (-not $FrameworkRoot) { $FrameworkRoot = "${rootDriveLetter}:\NerdNavis\NerdNavis.Framework" }
# 경로 추정: BurningTimesRoot 드라이브 기반 동적 default (PC별 하드코딩 회피)
# 사용자가 -UnityRoot/-FrameworkRoot 명시하면 그 값 우선, 미명시면 BurningTimesRoot 드라이브의 \BurningTimes\* 패턴으로 추정
$rootDriveLetter = (Split-Path $BurningTimesRoot -Qualifier).TrimEnd(':')
if (-not $UnityRoot) { $UnityRoot = "${rootDriveLetter}:\BurningTimes\FilGoodBandits\DeckBuilding" }
if (-not $FrameworkRoot) { $FrameworkRoot = "${rootDriveLetter}:\BurningTimes\BurningTimes.Framework" }
Write-Host "=== 너드나비스 조직 레포 셋업 ==="
Write-Host "NerdNavisRoot: $NerdNavisRoot"
Write-Host "=== BurningTimes 조직 레포 셋업 ==="
Write-Host "BurningTimesRoot: $BurningTimesRoot"
Write-Host "UnityRoot: $UnityRoot $(if (-not (Test-Path $UnityRoot)) { '(경로 미존재 - paths.local.json 생성 후 수동 수정 권장)' })"
Write-Host "FrameworkRoot: $FrameworkRoot $(if (-not (Test-Path $FrameworkRoot)) { '(경로 미존재 - paths.local.json 생성 후 수동 수정 권장)' })"
@ -41,11 +41,11 @@ git --version | Out-Null
if (-not $?) { throw "Git이 설치되지 않았습니다." }
# 2. paths.local.json 생성
$pathsFile = Join-Path $NerdNavisRoot "paths.local.json"
$pathsFile = Join-Path $BurningTimesRoot "paths.local.json"
if (-not (Test-Path $pathsFile)) {
$paths = [ordered]@{
"_description" = "로컬 환경 경로. 커밋 금지."
NERDNAVIS_ROOT = $NerdNavisRoot
BURNINGTIMES_ROOT = $BurningTimesRoot
UNITY_PROJECT_ROOT = $UnityRoot
FRAMEWORK_PKG_ROOT = $FrameworkRoot
TABLE_EXPORT_ROOT = (Join-Path $UnityRoot "Assets\ResWork\Table\Export")
@ -63,7 +63,7 @@ if (-not (Test-Path $pathsFile)) {
# 3. Claude 사용자 메모리 연결 (junction)
$claudeMemoryBase = "$env:USERPROFILE\.claude\projects"
$orgMemoryTarget = Join-Path $NerdNavisRoot "memory\org"
$orgMemoryTarget = Join-Path $BurningTimesRoot "memory\org"
if (-not (Test-Path $orgMemoryTarget)) {
New-Item -ItemType Directory -Path $orgMemoryTarget | Out-Null
@ -72,15 +72,15 @@ if (-not (Test-Path $orgMemoryTarget)) {
$hashDirs = @()
if (Test-Path $claudeMemoryBase) {
# Claude Code는 프로젝트 경로의 각 세그먼트를 '-'로 이어 해시 폴더명을 만든다
# (예: E:\NerdNavisAi → E--NerdNavisAi, C:\Users\PC\Documents\너드나비스 → C--Users-PC-Documents-너드나비스)
# NerdNavisRoot의 리프 이름·드라이브 prefix·관례적 키워드를 모두 포괄하도록 필터 확장
$rootLeaf = Split-Path $NerdNavisRoot -Leaf
$rootDrive = (Split-Path $NerdNavisRoot -Qualifier).TrimEnd(':')
# (예: E:\BurningTimesAi → E--BurningTimesAi, C:\Users\PC\Documents\BurningTimes → C--Users-PC-Documents-BurningTimes)
# BurningTimesRoot의 리프 이름·드라이브 prefix·관례적 키워드를 모두 포괄하도록 필터 확장
$rootLeaf = Split-Path $BurningTimesRoot -Leaf
$rootDrive = (Split-Path $BurningTimesRoot -Qualifier).TrimEnd(':')
$hashDirs = Get-ChildItem $claudeMemoryBase -Directory -ErrorAction SilentlyContinue |
Where-Object {
$_.Name -like "*Documents*" -or
$_.Name -like "*너드나비스*" -or
$_.Name -like "*NerdNavis*" -or
$_.Name -like "*BurningTimes*" -or
$_.Name -like "*BurningTimes*" -or
$_.Name -like "*$rootLeaf*" -or
$_.Name -like "$rootDrive--*"
}
@ -112,12 +112,12 @@ if ($hashDirs.Count -eq 0) {
# 3.5. Live 증분 동기화 중앙 저장소 + Junction (C34, 2026-04-18 PD님 직접 지시)
# worktree 격리로 인한 .live/ 물리 분리 문제를 해결하기 위해
# $HOME\.claude\nerdnavis-live\ 중앙 디렉토리로 junction 연결한다.
# $HOME\.claude\burningtimes-live\ 중앙 디렉토리로 junction 연결한다.
# 헌법 제1원칙 ⑤ 세션·PC 연속성의 근원 보장 장치.
$centralLive = Join-Path $env:USERPROFILE ".claude\nerdnavis-live"
$localLive = Join-Path $NerdNavisRoot ".live"
$centralLive = Join-Path $env:USERPROFILE ".claude\burningtimes-live"
$localLive = Join-Path $BurningTimesRoot ".live"
$markerName = ".junction-marker"
$markerText = "nerdnavis-live central junction target (C34, 2026-04-18)"
$markerText = "burningtimes-live central junction target (C34, 2026-04-18)"
if (-not (Test-Path $centralLive)) {
New-Item -ItemType Directory -Path $centralLive -Force | Out-Null
@ -153,11 +153,11 @@ if (Test-Path $localLive) {
}
# 3.6. memory/org/ 중앙 저장소 + Junction (C34-16, 2026-04-19 신설)
# Claude user memory junction 대상을 $HOME\.claude\nerdnavis-memory\로 변경.
# Claude user memory junction 대상을 $HOME\.claude\burningtimes-memory\로 변경.
# 레포 `memory/org/`는 git 추적 SOT로 실체 디렉토리 유지 + sync 스크립트가 양방향 동기화.
$centralMemory = Join-Path $env:USERPROFILE ".claude\nerdnavis-memory"
$centralMemory = Join-Path $env:USERPROFILE ".claude\burningtimes-memory"
$memoryMarkerName = ".memory-junction-marker"
$memoryMarkerText = "nerdnavis-memory central (C34-16, 2026-04-19)"
$memoryMarkerText = "burningtimes-memory central (C34-16, 2026-04-19)"
if (-not (Test-Path $centralMemory)) {
New-Item -ItemType Directory -Path $centralMemory -Force | Out-Null
@ -170,7 +170,7 @@ if (-not (Test-Path $centralMemoryMarker)) {
}
# 초기 sync — 레포 memory/org → 중앙 (기존 중앙 파일 덮어쓰기 안 함)
$repoMemoryOrg = Join-Path $NerdNavisRoot "memory\org"
$repoMemoryOrg = Join-Path $BurningTimesRoot "memory\org"
if (Test-Path $repoMemoryOrg) {
Get-ChildItem $repoMemoryOrg -File -ErrorAction SilentlyContinue | Where-Object { $_.Extension -in @('.md','.json') } | ForEach-Object {
$dst = Join-Path $centralMemory $_.Name
@ -179,9 +179,9 @@ if (Test-Path $repoMemoryOrg) {
Write-Host "memory 초기 sync 레포 → 중앙 완료"
}
# 모든 E--NerdNavisAi* 해시 폴더 순회하여 junction 중앙으로 재연결 (광범위 filter)
# 모든 E--BurningTimesAi* 해시 폴더 순회하여 junction 중앙으로 재연결 (광범위 filter)
$allHashDirs = Get-ChildItem $claudeMemoryBase -Directory -ErrorAction SilentlyContinue |
Where-Object { $_.Name -like "E--NerdNavisAi*" -or $_.Name -like "*NerdNavisAi*" }
Where-Object { $_.Name -like "E--BurningTimesAi*" -or $_.Name -like "*BurningTimesAi*" }
foreach ($d in $allHashDirs) {
$memLink = Join-Path $d.FullName "memory"
@ -216,11 +216,11 @@ foreach ($d in $allHashDirs) {
# 4. .claude/settings.json 부서 동기화 (루트 SOT → 개발팀/기획팀 복제)
# Claude Code는 .claude/ 계층 auto-merge를 지원하지 않으므로 자식 디렉토리에서 세션 시작 시
# 루트 settings.json을 인식하지 못함. 이를 우회하기 위해 루트 settings.json을 부서 디렉토리로 복제.
$rootSettings = Join-Path $NerdNavisRoot ".claude\settings.json"
$rootSettings = Join-Path $BurningTimesRoot ".claude\settings.json"
if (Test-Path $rootSettings) {
$deptPaths = @("개발팀", "기획팀")
foreach ($dept in $deptPaths) {
$deptClaudeDir = Join-Path $NerdNavisRoot "$dept\.claude"
$deptClaudeDir = Join-Path $BurningTimesRoot "$dept\.claude"
$deptSettings = Join-Path $deptClaudeDir "settings.json"
if (-not (Test-Path $deptClaudeDir)) {
New-Item -ItemType Directory -Path $deptClaudeDir -Force | Out-Null
@ -286,9 +286,9 @@ if ($CreateShortcuts) {
$desktop = [Environment]::GetFolderPath("Desktop")
$targets = @(
@{ Name = "너드나비스_총괄PM"; Dir = $NerdNavisRoot; Desc = "너드나비스 총괄PM 세션 (루트)" },
@{ Name = "너드나비스_개발팀"; Dir = (Join-Path $NerdNavisRoot "개발팀"); Desc = "너드나비스 개발팀 세션" },
@{ Name = "너드나비스_기획팀"; Dir = (Join-Path $NerdNavisRoot "기획팀"); Desc = "너드나비스 기획팀 세션" }
@{ Name = "BurningTimes_총괄PM"; Dir = $BurningTimesRoot; Desc = "BurningTimes 총괄PM 세션 (루트)" },
@{ Name = "BurningTimes_개발팀"; Dir = (Join-Path $BurningTimesRoot "개발팀"); Desc = "BurningTimes 개발팀 세션" },
@{ Name = "BurningTimes_기획팀"; Dir = (Join-Path $BurningTimesRoot "기획팀"); Desc = "BurningTimes 기획팀 세션" }
)
foreach ($t in $targets) {