run-to-the-endlisted
Install: claude install-skill jjackkun/claude-harness-hermes
# run-to-the-end — 시작한 일은 그 턴 안에서 끝낸다
## 왜 만들었나
실제로 난 일이다. 한 세션에서 **세 번** 같은 모양이었다.
```
나 시험을 배경으로 돌린다 → "끝나면 커밋하겠습니다" → 턴을 끝낸다
사용자 "시험 끝났어?"
나 (읽어 보고) "끝났습니다. 커밋하겠습니다" → 또 턴을 끝낸다
사용자 "왜 자꾸 끝났는데 끝나는대로 하겠다고 하는거야"
```
★ **턴을 끝내면 공이 사용자에게 넘어간다.** 배경으로 돌린 뒤 턴을 끝내는 것은
**기다리는 일을 사용자에게 떠넘기는 것**이다. 사용자는 진행 보고를 원한 적이
없다 — **끝난 결과**를 원했다.
⚫ 마지막에는 더 나빴다: 시험 결과(`537 passed`)를 **이미 읽어 놓고도**
*"끝나면 하겠습니다"* 라고 했다. 읽은 것과 말한 것이 어긋났다.
## 🔴 배경으로 돌릴 이유가 대개 없다 — 숫자로 확인한다
`Bash` 는 **앞에서 600초까지 기다린다**(`timeout` 최대치, 밀리초로 준다).
대부분의 검사는 그 절반도 안 쓴다.
```bash
# ✅ 이렇게 — 결과를 손에 쥔 채로 다음 걸음까지 간다
Bash(command="<시험 명령>", timeout=600000)
# 🔴 이러지 않는다 — 기다리기만 할 거면서 배경으로 돌린다
Bash(command="...", run_in_background=True) # → 턴이 끝나고 사용자가 기다린다
```
⚠️ **이 저장소는 얼마나 걸리나.** 숫자는 저장소마다 다르고 시간이 가면 늙는다.
그래서 **외우지 말고 잰다:**
```bash
bash <이 스킬 폴더>/tests/how-long.sh
```
`package.json` · `Makefile` · `pyproject.toml` 등에서 **그 저장소의 검사 명령을
스스로 찾아** 하나씩 재고, 앞 한도 안에 드는지 알려 준다.
## 배경은 언제 쓰나 — **그동안 딴 일을 할 때만**
배경이 나쁜 것이 아니다. **그동안 실제로 다른 일을 할 때** 쓰는 것이다.
```
✅ 시험을 배경으로 돌리고 그 사이 문서를 채운다 → 같은 턴에서 결과를 읽는다
✅ 앞 한도(600초)를 넘는 것 — 배포 · 대규모 수집 · 오래 도는 벤치마크
🔴 배경으로 돌리고 할 일이 없어서 턴을 끝낸다 ← 이것이 그 실수다
```
⚠️ **배경으로 돌렸으면 그 턴 안에서 결과를 읽는다.** 딴 일이 먼저 끝나면
기다린다 — 사용자에게 넘기지 않는다.
## 턴을 끝내기 전 한 줄 점검
**마지막 문장이 사용자에게 "기다리라" 고 말하고 있나?**
```
🔴 "시험이 끝나면 커밋하겠습니다"
🔴 "결과가 나오면 알려 드리겠습니다"
✅ "537개 통과했습니다. 커밋했습니다 (abc1234)."
```
★ **끝났으면 다음 걸음까지 간다.** 사용자가 이미 *"진행하자"* 라고 했다면
그 진행에는 **커밋까지**가 들어 있다. 검사가 초록인 것을 확인한 뒤 다시
물어볼 일이 아니다.
⚠️ **