← ClaudeAtlas

doc-driftlisted

기능 개발 문서(FE_*.md·BE_*.md 등)가 실제 코드 변경을 따라가지 못해 노후화된 것을 탐지한다. 문서가 참조하는 source 파일이 문서 최종 갱신 이후 변경됐는지 git 이력으로 비교해 stale 문서를 리포트한다. 문서 신뢰성 점검·주기 감사 시 사용. 어느 프로젝트에서나 사용 가능. 트리거 키워드: "문서 drift", "문서 노후", "stale 문서", "기능문서 점검", "문서-코드 동기화", "doc drift", "/doc-drift"
Kyungjong-kim/claude-code-harness · ★ 0 · AI & Automation · score 70
Install: claude install-skill Kyungjong-kim/claude-code-harness
# Doc Drift > 기능 문서를 작성·갱신하는 규율(게이트)이 문서 *작성*은 닫아도, 코드만 바뀌고 문서가 안 따라간 *노후*는 못 막는다. > 이 스킬은 문서가 참조하는 source 파일의 git 변경 시점을 문서 갱신 시점과 비교해 stale 문서를 찾는다. > **읽기 전용 — 탐지만.** 발견 후 사용자 확인 하에 갱신. 저장소 루트에서 실행. 특정 영역만 보려면 인자로 경로 전달(예: `src/docs/pages`). > **쉘 호환(중요)**: 모든 쉘(bash·zsh·sh/dash)에서 동작하도록 작성. 금지 — `for x in $var`(zsh 단어분리 안 함), `< <(...)`(POSIX sh 미지원). **임시파일 redirect**(`done < "$tmp"` — 카운터 유지)와 **내부 파이프 결과 캡처**(`result=$(... | while read)`)를 쓴다. > **경로 주의**: 문서의 source 경로는 보통 **프로젝트 루트 기준 상대경로**(`src/...`)다. 모노레포면 문서가 속한 패키지 prefix를 붙여 해소한다(`resolve()`). ### 통합 실행 (영역 인자 선택) ```bash SCOPE="${ARGS:-.}" tmp=$(mktemp) # 문서 파일 패턴은 프로젝트 컨벤션에 맞게 조정 (예: FE_*.md·BE_*.md) find $SCOPE \( -name "FE_*.md" -o -name "BE_*.md" \) -not -path "*/node_modules/*" -not -path "*/archive/*" > "$tmp" proj_prefix() { # 문서 경로 → source 상대경로 앞에 붙일 패키지 prefix (모노레포 대응) case "$1" in */docs/*) printf '%s/' "$(echo "$1" | cut -d/ -f1)" ;; # <pkg>/docs/... → <pkg>/ *) printf '' ;; # 루트 docs/... → prefix 없음 esac } resolve() { for c in "$2$1" "$1"; do [ -e "$c" ] && { printf '%s' "$c"; return 0; }; done; return 1; } stale_n=0; ok_n=0; unverif=0; nofield=0 while IFS= read -r doc; do [ -z "$doc" ] && continue grep -q "최종 확인\|Last verified\|last-verified" "$doc" || nofield=$((nofield+1)) doc_epoch=$(git log -1 --format=%ct -- "$doc" 2>/dev/null) [ -z "$doc_epoch" ] && { echo "⚠️ 미커밋(비교 불가): $doc"; continue; } prefix=$(proj_prefix "$doc"