tm-debuglisted
Install: claude install-skill x-mesh/term-mesh
# tm-debug — term-mesh 라이브 디버그 루프
term-mesh DEV의 렌더/peer 시각 버그를 잡는 **반자동 루프**다. 사람이 증상을 재현하고("로그 봐줘"/"계속"), 스킬은 그 구간의 debug 로그를 해석해 가설과 최소 수정안을 낸다. 수정 적용과 `reload.sh` 재빌드 전에는 **반드시 사용자 확인**을 받는다.
## 언제 쓰나
- term-mesh DEV에서 pane/peer가 안 보이거나, 깜빡이거나, 일부만 그려지거나, redraw가 안 될 때
- 사용자가 증상을 재현하고 "로그 봐줘" / "계속"이라고 할 때
- `reload.sh --tag X`로 띄운 빌드를 디버깅 중일 때
이 스킬은 term-mesh DEV 전용이다(`reload.sh`, `/tmp/term-mesh-debug-*.log` 경로 의존). 다른 프로젝트엔 적용하지 않는다.
## 루프 (6단계)
```
1. 감지 → 활성 태그 + debug 로그 경로 찾기
2. 구간 → 증상 시각 부근만 추출 (전체 덤프 금지)
3. 가설 → 서브시스템 신호 해석 → 근본원인 후보
4. 게이트 → 최소 수정안(파일:라인/diff 요지) 제시 → 사용자 확인 ⛔ 여기서 멈춤
5. reload → 확인 후 reload.sh --tag <같은 태그>로 재빌드
6. 재검증 → 사용자 재현 → 해결이면 cleanup 안내, 아니면 1로
```
핵심 규칙: **4단계 게이트를 건너뛰지 않는다.** 분석·가설·수정안까지는 자동, 적용/reload는 사용자 승인 후.
---
## 1. 감지 — 활성 태그 / 로그 경로
`reload.sh`는 마지막 빌드의 debug 로그 경로를 `/tmp/term-mesh-last-debug-log-path`에 기록한다. 이걸 1순위로 쓴다.
```bash
# 활성 debug 로그 경로 (1순위: reload.sh가 기록한 경로)
LOG="$(cat /tmp/term-mesh-last-debug-log-path 2>/dev/null)"
# 2순위: 가장 최근 수정된 태그 로그
[ -f "$LOG" ] || LOG="$(ls -t /tmp/term-mesh-debug-*.log 2>/dev/null | head -1)"
echo "log: $LOG"
# 현재 태그 (로그 파일명에서 역산: term-mesh-debug-<slug>.log)
TAG="$(basename "$LOG" .log | sed 's/^term-mesh-debug-//')"
echo "tag: $TAG"
```
태그가 여러 개거나 모호하면 추측하지 말고 사용자에게 어느 태그인지 확인한다. `--tag`는 reload 시 동일 값을 유지해야 한다(병렬 빌드 오염 방지).
## 2. 구간 추출 — 증상 발생 시각만
로그는 `HH:MM:SS.mmm subsystem.event key=value ...` 포맷이라 시각 상관이 쉽다. **전체를 읽지 말 것** — 컨텍스트 낭비 + 노이즈.
```bash
# 마지막 N초 구간