AI 비서는 “기억력이 나쁜” 것이 아니라 를 가지고 있습니다. 잘못된 거버넌스 이런 경험을 해보셨을 겁니다: 세심하게 작성한 아키텍처 가이드를 모델이 무시합니다. “4계층 아키텍처”라고 말했는데 3계층만 출력합니다. “ 사용 금지”라고 했는데, 마치 호의를 베푸는 것처럼 을 그대로 사용합니다. el-input <el-input v-model="value" /> 이것은 지능의 문제가 아니라 인센티브의 문제입니다. Claude Code에서 일 뿐, 하드 제약 조건이 아닙니다. Claude가 스킬을 호출하지 않고도 답변할 수 있다고 “판단”하면 그렇게 할 것입니다. 그러면 . 스킬은 사용 가능한 컨텍스트 여러분의 프로젝트 핸드북은 장식품이 됩니다 저희 팀은 Claude Code를 사용하여 RuoYi-Plus 코드베이스를 구축하면서 이를 추적했습니다: 별도의 개입 없이 Claude는 프로젝트 스킬을 선제적으로 활성화한 비율이 약 25%에 불과했습니다. 즉, 4번 중 3번은 여러분의 “규칙”이 규칙이 아니라 제안에 불과합니다. 우리는 좀 더 엄격한 것을 원했습니다. Claude가 똑똑한 인턴처럼 행동하는 것이 아니라, 코드를 작성하기 전에 플레이북을 읽는 정규 직원처럼 행동하게 만드는 메커니즘 말입니다. 해결책은 프롬프트를 더 많이 추가하는 것이 아니었습니다. 해결책은 이었습니다. 훅(Hooks) 약 1개월간의 반복 끝에 구성 스택을 출시했습니다: .claude (거버넌스) 4개의 라이프사이클 훅 (지식) 26개의 도메인 스킬 (프로세스 오케스트레이션) 슬래시 명령어 (병렬 전문가) 에이전트 결과: . 규칙 위반 코드가 줄고, “다시 해달라”는 요청 사이클이 줄었으며, 위험한 도구 작업도 훨씬 줄었습니다. 개발 작업에 대한 스킬 활성화율: 약 25% → 90% 이상 이 글에서는 여러분의 저장소에서도 재현할 수 있도록 아키텍처를 자세히 설명합니다. 1) Claude Code가 “잊어버리는” 이유: 기본적으로 스킬은 선택 사항입니다 Claude Code의 기본 흐름은 다음과 같습니다: 사용자 프롬프트 → Claude 답변 (스킬 호출할 수도 있고 안 할 수도 있음) 그 “할 수도 있고 안 할 수도 있음”이 문제입니다. Claude의 내부 의사 결정 휴리스틱은 일반적으로 다음과 같습니다: “추가 컨텍스트 없이 빠르게 답변할 수 있을까?” “저장소 규칙을 준수해야 할까?”가 아니라 반드시 따라서 시스템은 편의성 쪽으로 기울어집니다. 여러분에게 필요한 것은 입니다. Claude가 추론을 시작하기 실행되고 매번 작업을 형성하는 경량 “제어 평면”입니다. 제도적 마찰 전에 2) 획기적인 발전: 강제 스킬 평가 훅 가장 빠른 시점에 발동하는 훅을 구현했습니다: . UserPromptSubmit Claude가 다른 어떤 작업을 하기 보는 짧은 정책 블록을 출력합니다: 전에 각 스킬 평가: 예/아니요 + 이유 “예”인 경우: 즉시 스킬 호출 그 후에: 구현 진행 “강제 평가” 훅 (핵심 로직) 의도적으로 단순하고 결정론적으로 유지합니다: 슬래시 명령어 감지 (탈출구) 그렇지 않으면 평가 프로토콜 출력 // .claude/hooks/skill-forced-eval.js (핵심 아이디어, 간소화됨) const prompt = process.env.CLAUDE_USER_PROMPT ?? ""; // 탈출구: 사용자가 슬래시 명령어를 호출한 경우, 강제 평가 건너뛰기 const isSlash = /^\/[^\s/]+/.test(prompt.trim()); if (isSlash) process.exit(0); const skills = [ "crud-development", "api-development", "database-ops", "ui-pc", "ui-mobile", // ... 계속 (26개 보유) ]; const instructions = [ "## 필수 스킬 활성화 프로토콜 (반드시 따라야 함)", "", "### 1단계 — 평가", "각 스킬에 대해 다음 형식으로 출력: [스킬] — 예/아니요 — 이유", "", "### 2단계 — 활성화", "하나라도 '예'인 경우 → 즉시 Skill(<이름>) 호출.", "모두 '아니요'인 경우 → '스킬 필요 없음'으로 명시하고 계속 진행.", "", "### 3단계 — 구현", "2단계 완료 후 실제 솔루션 시작.", "", "사용 가능한 스킬:", ...skills.map(s => `- ${s}`) ].join("\n"); console.log(instructions); 실제 적용 시 변화 이전 (훅 없음): “쿠폰 관리 기능 구축.” Claude가 코딩을 시작하는데… 4계층 아키텍처나 금지된 구성 요소를 무시합니다. 이후 (강제 평가 훅 적용): Claude는 먼저 명시적인 결정 테이블을 생성한 후 스킬을 활성화하고, 그 후에 구현해야 합니다. 행동 변화는 “선택적 준수”를 제거하기 때문에 극적입니다. 3) 왜 90%이고 100%가 아닌가? 의도적으로 를 추가했기 때문입니다. 빠른 경로 사용자가 원하는 것을 정확히 알고 명령어를 입력할 때: /dev build coupon management /crud b_coupon /check 즉시 실행되어야 합니다. 따라서 훅은 슬래시 명령어에 대한 평가를 건너뛰고 명령어 워크플로우를 실행하도록 합니다. 이것이 절충점입니다: 자유 형식 프롬프트에 대한 거버넌스 구조화된 명령어에 대한 속도 4) 라이프사이클 제어 평면으로서의 훅 (4개 훅 스택) 훅을 에이전트 세션의 CI 파이프라인으로 생각하십시오. 단, 실시간으로 터미널에서 실행됩니다. 네 가지 주요 지점을 사용합니다: 4.1 SessionStart: “말하기 전에 저장소를 살펴본다” 세션이 시작될 때 다음을 표시합니다: 현재 git 브랜치 커밋되지 않은 변경 사항 열려 있는 TODO / 상태 일반적인 명령어 출력 예시: 🚀 세션 시작: RuoYi-Plus-Uniapp 시간: 2026-02-16 21:14 브랜치: master ⚠️ 커밋되지 않은 변경 사항: 5개 파일 📋 TODO: 3개 열림 / 12개 완료 바로 가기: /dev 기능 빌드 /crud 모듈 생성 /check 컨벤션 확인 Claude가 빈 방에 들어가는 것처럼 행동하는 것을 멈춥니다. 중요한 이유: 4.2 UserPromptSubmit: 강제 스킬 평가 (규율) 이것은 “핸드북을 반드시 읽어야 한다”는 게이트입니다. 4.3 PreToolUse: 안전 계층 (도구 거버넌스) Claude Code는 Bash 실행, 파일 작성, 코드 편집 등 도구를 실행할 수 있기 때문에 강력합니다. 또한 사고가 발생하는 지점이기도 합니다. PreToolUse는 되돌릴 수 없는 작업 전에 마지막 방어선입니다. 작은 블랙리스트를 차단하고 (더 넓은 그레이리스트에 대해 경고)합니다: // .claude/hooks/pre-tool-use.js (개념적) const cmd = process.env.CLAUDE_TOOL_INPUT ?? ""; const hardBlock = [ /rm\s+(-rf|--recursive).*\s+\//i, /drop\s+(database|table)\b/i, />\s*\/dev\/sd[a-z]\b/i, ]; if (hardBlock.some(p => p.test(cmd))) { console.log(JSON.stringify({ decision: "block", reason: "위험한 명령어 패턴 감지됨" })); process.exit(0); } // 선택 사항: 민감한 작업(대량 삭제, chmod -R 등)에 대해 경고/확인 이것은 편집증이 아닙니다. 모델이 잘못된 디렉토리에서 로 “임시 파일을 정리”하는 것을 보았습니다. 모델이 주의 깊다고 가정하는 것에 의존하지 않는 가드레일이 필요합니다. rm -rf 4.4 Stop: “다음 단계 안내로 루프를 닫는다” Claude가 완료되면 다음을 수행합니다: 파일 변경 사항 요약 (새 파일 vs 수정된 파일) 다음 단계 제안 (테스트 실행, 문서 업데이트, 커밋) 선택적으로 에이전트 트리거 (코드 검토) 예시: ✅ 완료 — 8개 파일 변경됨 다음 단계: - @code-reviewer 백엔드 컨벤션 검토 - SQL 변경됨: 마이그레이션 스크립트 동기화 - 고려 사항: git commit -m "feat: 쿠폰 모듈" 목표: “채팅에서 작동했다”는 격차를 없애는 것입니다. 5) 스킬: 실제로 강제할 수 있는 지식 계층 활성화가 결정론적으로 되면, 스킬은 원래 의도했던 대로 작동합니다. 즉, 이 됩니다. 도메인별 지식 기반 26개의 스킬을 다음 분야에 걸쳐 구축했습니다: 백엔드 (CRUD, API, DB, 주석, 오류 처리) 프론트엔드 (PC 구성 요소 정책, 상태 관리) 모바일 (UI 키트, uniapp 플랫폼 제약) 통합 (결제, WeChat, OSS) 품질 (성능, 보안, 버그 탐지) 엔지니어링 관리 (아키텍처, git 워크플로우, 기술 결정) 확장 가능한 스킬 파일 구조 모든 파일은 동일한 구조를 따릅니다: SKILL.md # 스킬 이름 ## 트리거 시점 - 키워드: - 시나리오: ## 핵심 규칙 ### 규칙 1 설명 + 예시 ### 규칙 2 설명 + 예시 ## 금지 사항 - ❌ ... ## 참조 코드 - path/to/file ## 체크리스트 - [ ] ... 이러한 일관성은 모델이 스킬을 하는 방법을 학습하기 때문에 중요합니다. 소비 6) 명령어: 제안이 아닌 워크플로우 스킬은 “무엇이 올바른가”를 해결합니다. 명령어는 “프로세스가 무엇인가”를 해결합니다. 6.1 : 7단계 개발 파이프라인 /dev 를 특정한 워크플로우로 설계했습니다: /dev 요구 사항 명확화 설계 (API + 모듈 + 권한) DB 설계 (SQL + 사전 + 메뉴) 백엔드 (4계층 출력) 프론트엔드 (구성 요소 정책 + 라우팅) 테스트/검증 문서/진행 상황 업데이트 기본적으로 “시니어들이 주니어들이 일하기를 바라는 방식”을 실행 가능한 스크립트로 인코딩한 것입니다. 6.2 : 테이블에서 전체 모듈 생성 /crud 입력: /crud b_coupon 출력 (예시 세트): 엔티티 / BO / VO DAO + 쿼리 래퍼 규칙 서비스 + 컨트롤러 (금지된 패턴 없음) 매퍼 프론트엔드 API + 페이지 스캐폴드 수동 작업: / 명령어 기반: (검토 시간 포함) 2-4시간 5-10분 6.3 : 전체 스택 컨벤션 린팅 (인간 친화적) /check 여기서 스킬을 검증기로 변환합니다: 백엔드: 계층 규칙, 금지된 상속, 쿼리 래퍼 정책 프론트엔드: 금지된 구성 요소, 래퍼 사용 모바일: 구성 요소 키트, 단위, 가져오기 7) 에이전트: 병렬 전문가 (메인 스레드 과부하 방지) 일부 작업은 전용 하위 에이전트가 처리해야 합니다: : 엄격한 체크리스트를 사용한 컨벤션 검사 @code-reviewer : 상태 문서, TODO, 진행률 메트릭 업데이트 @project-manager 이점은 “더 많은 지능”이 아니라 와 메인 세션의 컨텍스트 오염 감소입니다. 관심사 분리 실용적인 패턴: 메인 에이전트가 코드를 생성합니다. Stop 훅이 검토를 제안합니다. 를 호출합니다. @code-reviewer 리뷰어가 구조화된 diff + 수정 목록을 반환합니다. 8) 전체 시스템: 거버넌스 + 지식 + 프로세스 + 분업 이것이 한 문장으로 된 아키텍처입니다: 훅은 행동을 강제하고, 스킬은 표준을 제공하며, 명령어는 워크플로우를 인코딩하고, 에이전트는 병렬 전문 지식을 처리합니다. 그리고 그렇습니다. 이것이 “일반 AI 어시스턴트”를 “저장소 네이티브 팀원”으로 바꾸는 방법입니다. 9) 최소 재현 설정 (복사-붙여넣기 용이) 작동하는 가장 작은 버전을 원하면 다음을 구축하십시오: .claude/ settings.json hooks/ skill-forced-eval.js pre-tool-use.js skills/ crud-development/ SKILL.md 최소 (UserPromptSubmit 훅) settings.json { "hooks": { "UserPromptSubmit": [ { "matcher": "", "hooks": [ { "type": "command", "command": "node .claude/hooks/skill-forced-eval.js" } ] } ], "PreToolUse": [ { "matcher": "", "hooks": [ { "type": "command", "command": "node .claude/hooks/pre-tool-use.js" } ] } ] } } 그런 다음 반복합니다: SessionStart 추가 Stop 추가 반복되는 “잘못된 행동”을 감지할 때만 스킬 확장 반복되는 워크플로우를 명령어로 인코딩 검토 및 PM 작업은 에이전트로 오프로드 마무리: “능력”이 병목 현상이 아니라 가 병목 현상입니다 활성화 모델은 이미 능력이 있습니다. 빠진 것은 입니다. 올바른 행동을 자동화하는 시스템 핸드북이 없는 신입 사원은 즉흥적으로 행동할 것입니다. 핸드북이 있는 신입 사원은: 강제 체크리스트 명확한 금지 패턴 반복 가능한 워크플로우 검토 및 PM을 위한 전문가 …빠르게 일관성을 갖추게 됩니다. Claude도 마찬가지입니다.