모델이 지켜주기를 바라는 대신 규칙을 실제로 강제하는 Claude 코드 플러그인을 만들었습니다
요약
Claude 모델이 규칙을 무시하는 문제를 해결하기 위해 'Writ'이라는 코드 플러그인을 개발했습니다. Writ은 Neo4j 지식 그래프를 사용하여 작업에 필요한 관련 규칙만 검색하고 컨텍스트 토큰 사용량을 획기적으로 줄이는 첫 번째 구성 요소를 갖추고 있습니다. 두 번째 핵심 요소는 프롬프트가 아닌 bash hooks 기반의 강제화 계층으로, AI가 코드를 작성하거나 도구를 호출하기 전에 정적 분석 및 테스트 실행을 의무화하여 규칙 준수를 물리적으로 강제합니다.
핵심 포인트
- Neo4j 지식 그래프를 활용하여 필요한 관련 규칙만 선택함으로써 컨텍스트 토큰 사용량을 83,000토큰에서 약 1,600토큰으로 대폭 감소시킵니다.
- bash hooks 기반의 '강제화 계층(enforcement layer)'을 도입하여 AI가 계획이나 테스트 골격 승인 없이 코드를 작성하거나 도구를 호출하는 것을 원천적으로 차단합니다.
- PreToolUse, PostToolUse, SessionEnd에 연결된 30개의 스크립트를 통해 모든 파일 작성 시 정적 분석기(PHPStan, ESLint 등)와 사용자 지정 분석기를 자동으로 실행합니다.
- 276개의 규칙과 1,442개의 테스트 케이스가 기본으로 제공되며, 이는 12개 도메리에 걸쳐 적용 가능합니다.
Claude Code를 많이 사용해 왔는데, 여기서 모두가 이야기하는 똑같은 문제에 계속 부딪힙니다: 모델이 당신의 규칙을 무시한다는 것입니다. 테스트를 먼저 작성하라고 지시하면 구현 코드를 작성합니다. 코딩 표준을 제공해도 그중 일부만 골라 따릅니다. 그리고 규칙집이 늘어날수록, 작업에 관련 있는 몇 안 되는 규칙들 때문에 모든 것을 컨텍스트에 채워 넣으면서 점점 더 많은 토큰을 소모하게 됩니다.
그래서 Writ을 만들었습니다. 두 가지 구성 요소가 있습니다:
첫 번째는 현재 작업에 필요한 관련 규칙과 스킬만 선택하는 검색 엔진입니다. Neo4j 지식 그래프를 통해 5단계 파이프라인을 실행하므로, 하나의 규칙이 발동되면 관련된 규칙(의존성, 충돌, 보완)들이 자동으로 함께 옵니다. 중앙값 쿼리 시간은 0.338ms입니다. 276개의 규칙에 대해 컨텍스트를 약 83,000 토큰에서 쿼리당 약 1,600 토큰으로 줄여줍니다.
두 번째는 프롬프트가 아닌 bash hooks 기반의 강제화 계층(enforcement layer)입니다. PreToolUse, PostToolUse, SessionEnd에 연결된 30개의 스크립트가 있습니다. 작업 모드에서는 사용자가 계획과 테스트 골격을 승인하기 전까지 Claude가 코드를 작성할 수 없습니다. 실제로 정적 분석을 실행하고 증명하지 않고는 '테스트 통과'라고 말할 수 없습니다. 이 후크들은 도구 호출(tool calls)을 가로채서 실행되기 전에 차단합니다. AI가 규칙을 따를지 안 할지를 결정하게 두지 않습니다.
또한 프로젝트의 린터(linter)들을 자동으로 발견하고 실행합니다. PHPStan, ESLint, ruff, cargo check, go vet 등입니다. 게다가 주입(injection), 인증(auth), 암호화(crypto), N+1 쿼리에 대한 사용자 지정 분석기까지 포함됩니다. 모든 것이 파일 작성 시마다 이루어집니다.
276개의 규칙과 스킬이 12개 도메리에 걸쳐 기본으로 제공되며, 테스트는 1,442개가 있습니다.
Writ repo: https://github.com/infinri/Writ
AI 자동 생성 콘텐츠
본 콘텐츠는 r/ClaudeAI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기