slowlp
← 블로그
방법 2026.07.07 · 3분 읽기

말을 안 해도 되게 만드는 일 - 하네스 엔지니어링

방법

프롬프트를 아무리 잘 써도 남는 문제가 하나 있다. 잘 쓴 그 지시를 새 세션을 열 때마다 다시 입력해야 한다는 것. LLM은 새 세션마다 당신을 처음 만난다에서 짚었듯, LLM은 이전 세션을 기억하지 못한다. 매번 처음 만나는 사람한테 같은 설명을 반복하는 셈이다.

여기서 한 단계 더 나가면 질문이 바뀐다. “이번엔 뭐라고 말할까”가 아니라 “이 말을 매번 하지 않으려면 뭘 만들어둬야 할까”로. 이게 하네스 엔지니어링이다.

이 역할을 하는 장치는 크게 세 가지다.

스킬은 특정 작업의 절차를 통째로 파일에 적어두고 필요할 때 불러 쓰는 장치다. 예를 들어 이 글을 쓰는 데 쓴 blog-brief 스킬은 frontmatter에 이렇게 적혀 있다.

---
model: opus
description: seed 파일을 받아 각도·메시지·줄거리를 설정하고 brief 상태로 올린다. 사람 승인 필수 체크포인트.
allowed-tools: Bash(find:*), Bash(grep:*), Read, Edit, Glob, AskUserQuestion
---

allowed-tools에 딱 필요한 도구만 나열해두면, 이 스킬을 부를 때마다 “파일 찾고, 읽고, 편집하고, 사람한테 물어봐”를 매번 다시 설명할 필요가 없다. 절차 자체가 파일에 이미 구조화되어 있다.

CLAUDE.md는 프로젝트 컨벤션과 제약조건을 프로젝트 루트에 박아두는 파일이다. 세션이 새로 열려도 이 파일은 자동으로 같이 실려간다. 예를 들어 이런 식이다.

## 프로젝트 맵 (크로스 프로젝트 인지용 — 한 줄 인덱스, 상세는 각 레포·second 위키)

- **second** (`~/Library/...`) — LLM 지식 위키/세컨드브레인. ⭐ 이 경로가 second 위키 루트의 단일 출처(SSOT)

이 한 줄을 세션마다 다시 설명할 필요가 없다. CLAUDE.md에 박아두면, 위치가 바뀌어도 이 한 줄만 고치면 모든 스킬이 따라온다.

커맨드나 훅은 반복되는 트리거를 아예 자동화해서, 말하지 않아도 조건이 맞으면 실행되게 한다. 이건 실제 settings.json에 있는 훅이다.

"hooks": {
  "PreToolUse": [{
    "matcher": "Skill",
    "hooks": [{
      "type": "command",
      "command": "bash \"$CLAUDE_PROJECT_DIR/scripts/hook_digest_guard.sh\"",
      "timeout": 20,
      "statusMessage": "시크릿 사전검사(scrub 가드)"
    }]
  }]
}

스킬을 부를 때마다 “혹시 시크릿 들어있는지 확인해줘”라고 말할 필요가 없다. Skill 도구가 호출되는 순간 자동으로 걸리게 되어 있다.

프롬프트 엔지니어링이 “이번에 뭐라고 말할까”를 잘 하는 일이라면, 하네스 엔지니어링은 “말을 안 해도 되게 만드는” 일이다. 아무리 잘 쓴 지시도 대화 안에만 있으면 그 세션에 종속된다. 세션이 닫히는 순간 같이 사라지고, 다음 세션에서 또 처음부터다. 하네스 엔지니어링은 이 문제를 구조로 푼다. 지시를 대화 밖으로 꺼내 스킬·CLAUDE.md·훅 같은 구조물로 옮겨두면, 세션이 몇 번을 새로 열려도 그대로 남는다. 한 번의 대화에 갇혀 있던 해결책이 세션 바깥의 자산이 되는 것. 그게 하네스다.

댓글