본문으로 건너뛰기

© 2026 Molayo

Zenn헤드라인2026. 06. 03. 11:39

Claude Code의 금지 사항을 번호로 관리하기 — 규칙 ID 시스템 입문

요약

Claude Code 사용 시 지시 사항이 망각되는 문제를 해결하기 위해 PreToolUse 훅을 통한 기계적 차단과 규칙 ID 시스템을 결합한 관리 방법을 제안합니다. 규칙에 고유 번호를 부여함으로써 예외 상황 발생 시 Claude와의 소통을 명확하게 하고 문맥 오류를 최소화할 수 있습니다.

핵심 포인트

  • PreToolUse 훅을 사용하여 물리적으로 중요한 규칙을 강제 차단
  • 규칙에 ID(T01, G01 등)를 부여하여 예외 처리의 명확성 확보
  • 접두사를 활용한 체계적인 규칙 분류 및 관리 방법 제시
  • 문맥 추측 대신 번호 참조를 통한 Claude와의 정확한 커뮤니케이션

Claude Code의 금지 사항을 번호로 관리하기 — 규칙 ID 시스템 입문

「금지」는 사라진다

Claude Code에게 「git push는 하지 마」라고 전달했다. 한동안은 지켜주었다. 하지만 3일 후, 다른 태스크의 흐름 속에서 실행되고 말았다.

지시의 「금지」는 세션(Session)을 넘어가면 희미해진다. CLAUDE.md에 적어 두어도, 긴 세션 속에서 묻혀버린다.

이 문제에는 두 가지 접근 방식이 있다:

기계적으로 강제하기: PreToolUse 훅(Hook)으로 물리적으로 차단한다 -
번호로 관리하기: 규칙에 ID를 붙여 예외 처리를 간결하게 만든다

둘 중 하나가 아니라, 조합함으로써 「중요한 규칙은 반드시 지켜지고, 경미한 규칙은 유연하게 예외를 인정받을 수 있는」 상태가 된다.

접근 방식 1: PreToolUse 훅으로 기계적 차단

가장 중요한 금지 사항(「절대로 해서는 안 되는 조작」)은 훅(Hook)으로 기계적으로 차단한다. Claude의 지시 이해에 의존하지 않는다.

훅의 구조

구현 예시

// ~/.claude/hooks/safety-guard.js
const chunks = [];
process.stdin.on('data', d => chunks.push(d));
...
// settings.json
{
"hooks": {
...

훅(Hook)으로 차단되는 규칙은 「예외 없음」인 것들이다. 여기에 추가하는 것은 신중해야 한다.

접근 방식 2: 규칙에 번호를 붙여 예외 처리를 간결하게

훅(Hook)으로 강제할 수 없는 규칙(코드 스타일, 설계 방침, 작업 흐름)은 CLAUDE.md나 rules/에 작성한다. 이때, 규칙에 번호를 붙이면 예외 처리가 격하게 쉬워진다.

번호 없는 규칙 관리 (Before)

# CLAUDE.md
- 테스트는 반드시 testcontainers를 사용한다. 모크(Mock) DB는 사용하지 않는다.
- API 키는 os.environ.get에 의존하지 않고, .env를 직접 읽어 api_key=로 전달한다.
...

예외를 인정할 때:

사용자: 「아까 그 DB 건 말인데, 이번 유닛 테스트는 인메모리(In-memory) SQLite로 해도 돼」
Claude: (어떤 규칙에 대한 예외인지 불명확함. 테스트 방침인지, DB 사용법인지)

번호 있는 규칙 관리 (After)

# CLAUDE.md
## 개발 방침 (번호로 참조 가능)
- T01: 테스트는 반드시 testcontainers를 사용한다. 모크(Mock) DB는 사용하지 않는다.
...

예외를 인정할 때:

사용자: 「T01을 이번 유닛 테스트에 대해서만 예외로 해줘. 인메모리(In-memory) SQLite로 해도 돼」
Claude: (T01이 무엇인지 정확히 파악. 이 테스트에 한해서는 testcontainers를 사용하지 않아도 된다고 이해)

번호 관리의 효과

케이스번호 없음번호 있음
규칙 참조「아까 말한 DB 관련 규칙」「T01」
...

특히 예외 처리가 달라진다. 번호가 없으면 「어떤 규칙에 대한 예외인지」를 Claude가 문맥으로부터 추측해야 한다. 번호가 있으면 일대일로 대응된다.

번호 설계 방침

규칙의 성격에 따라 접두사(Prefix)를 나누면 관리하기 쉽다.

접두사대상예시
T테스트 방침T01: testcontainers 사용
GGit 조작G01: feature 브랜치에서 PR
AAPI·외부 연동A01: .env 직접 읽기
C코드 스타일C01: 타입 힌트 필수

접두사는 자신의 프로젝트에 맞춰 결정한다. 중요한 것은 「같은 문자+번호로 일관되게 참조할 수 있는 것」이다.

무엇을 어디에 사용할 것인가

규칙의 성격적절한 수단
「절대로 실행해서는 안 되는 조작」PreToolUse 훅으로 기계적 차단
...

훅(Hook)은 「예외 없음」 규칙에만 사용한다. 예외를 인정할 가능성이 있는 규칙을 훅(Hook)에 넣으면, 훅을 비활성화하지 않으면 작업할 수 없게 된다.

요약

  • PreToolUse 훅은 「절대 금지」 조작의 기계적 강제에 사용한다
  • CLAUDE.md의 규칙에는 번호를 붙이면 예외 처리를 한마디로 끝낼 수 있다
  • 번호는 접두사(Prefix)로 성격을 분류하면 참조하기 쉽다
  • 훅(기계적 강제)과 번호 관리(유연한 예외)는 보완 관계이다

이 메커니즘을 5개 층의 하네스(Harness) 전체에 통합하는 설계는 유료 도서인 「Claude Code 하네스 엔지니어링 실전 Playbook」에서 설명하고 있다.

좋아요와 댓글로 반응해 주시면 큰 힘이 됩니다!

Discussion

AI 자동 생성 콘텐츠

본 콘텐츠는 Zenn AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0