📝 한줄 요약
법령마다 구조가 달라 목적·정의·절차·벌칙을 매번 여러 차례 왕복해 읽던 방식을, 법령명만 말하면 현행 근거를 모으고 검증된 학습가이드를 만드는 AI 스킬로 바꿨습니다. 좋은 프롬프트 하나면 충분할 줄 알았지만, 진짜 업무 도구가 되려면 근거 수집·반박·검사·실패조건까지 함께 설계해야 한다는 것을 배웠습니다.
바쁘시면 이것만 읽어도 돼요:
법령마다 장·절 구조와 핵심 규율 방식이 달라 매번 처음부터 다시 읽어야 했습니다.
처음에는 AI에게 질문만 잘하면 법령별 차이도 알아서 처리할 줄 알았습니다.
Planner·Architect·Critic이 서로 반박하게 하고, 마지막 판정은 실제 법령 데이터에 맡겼습니다.
조문번호가 맞더라도 내용이나 수치가 틀릴 수 있어, 근거 번들과 대조하는 검사기를 만들었습니다.
서로 다른 법률을 대상으로 한 회귀검사 11건이 모두 통과했습니다.
실제 공인중개사법으로 종단 실행해 최종 검사 PASS, WARN 0을 확인했습니다.
아직 테스트 단계이며, 앞으로 실제 업무 법령 표본과 유형 경계 레이블을 늘릴 예정입니다.
결과물 자체보다 더 중요한 교훈은 “확실한 것은 자동화하고, 불확실한 것은 숨기지 않는다”였습니다.
🎯 이런 분들께 도움돼요
법령을 자주 읽지만 낯선 법을 만날 때마다 구조 파악부터 다시 시작하는 실무자
AI에게 법률자료를 정리시 키고 싶지만 그럴듯한 오류가 걱정되는 분
좋은 프롬프트를 재현 가능하고 검증 가능한 업무 절차로 발전시키고 싶은 분
😫 문제 상황: 법령 하나를 읽을 때마다 다시 출발선으로
새로운 법령을 접하면 보통 목적조항부터 정의, 적용 대상, 의무, 감독, 제재, 구제 순서로 읽습니다. 그런데 모든 법령이 같은 구조를 갖고 있지는 않습니다. 어떤 법은 허가와 등록이 중심이고, 어떤 법은 급부와 환수가 중심입니다. 어떤 법은 장 구분이 뚜렷하지만, 어떤 법은 장이 아예 없습니다. 벌칙이 핵심인 법도 있고, 벌칙 없이 강제징수와 가산금으로 작동하는 법도 있습니다.
그래서 법령 하나를 이해하려면 목차와 조문, 벌칙을 여러 차례 왕복해야 했습니다. 한 번 정리해도 다음 법령에서는 같은 방식이 그대로 재사용되지 않았습니다. 정확한 시간을 재지는 않았지만, “새 법령을 만날 때마다 처음부터 다시 읽는다”는 반복이 분명했습니다.
기존에는 직접 목차·조문·벌칙을 읽고 핵심을 정리했습니다. 이 방식은 한 법령을 이해하는 데는 도움이 됐지만, 다음 법령을 위한 도구나 절차로 남지 않았습니다. 매번 사람의 감각으로 다시 구조를 찾아야 했습니다.
🌱 처음에는 무엇을 몰랐나
처음에는 좋은 질문을 하나 만들면 AI가 법령별 차이를 알아서 처리할 줄 알았습니다.
“목적을 요약하고, 핵심 조문을 뽑고, 절차와 벌칙을 설명해 달라”는 프롬프트를 잘 다듬으면 어떤 법령에도 통할 것이라 생각했습니다. 실제로 AI는 그럴듯한 결과를 빠르게 만들었습니다. 문제는 그럴듯함과 정확함이 같은 말이 아니라는 점이었습니다.
조문번호가 실제로 존재해도, 그 조문에 붙은 동의율이나 기간이 다른 조문의 수치일 수 있었습니다. 법령의 장 구조를 제대로 가져오지 못하면 AI는 빈 공간을 자연스러운 설명으로 메울 수 있었습니다. 표본이 적은 상태에서 분류 기준을 고치면 특정 법률에만 잘 맞는 규칙이 만들어졌습니다.
그때 알게 됐습니다. AI가 답을 잘 쓰게 만드는 문제와, AI가 틀릴 수 있는 길을 막는 문제는 다르다는 것을요.
🛠️ 사용한 도구
Claude Code: 최초 설계, 합의형 에이전트 검토, Python 하네스 구현, 회귀검사
Planner·Architect·Critic: 계획 수립, 과설계 축소, 반례와 실패조건 검토
국가법령정보센터 데이터: 현행 법령의 조문·장절 구조·시행정보 수집
Hermes Agent: 기존 하네스를 대화에서 자동 선택되는 재사용 스킬로 연결
Markdown·Mermaid: 신원카드, 구조지도, 절차도, 제재표, 확인문답 작성
🔧 작업 과정
에피소드 1. AI가 AI의 설계를 반박하게 했다
처음부터 정답을 알고 있었던 것은 아닙니다. 그래서 단일 AI에게 계획과 구현을 모두 맡기기보다, 서로 다른 역할이 같은 설계를 공격하게 했습니다.
법령명이 하나 들어오면 그 법령의 핵심을 공부할 수 있는 일반 학습가이드를 만들고 싶다. 법령마다 형식과 조문 수가 달라도 작동해야 한다.
Planner는 데이터 수집 경로와 구현 계획을 만들었습니다. Architect는 계획이 지나치게 커졌다고 지적하며 파일과 검사기의 수를 줄이자고 했습니다. Critic은 축소안이 놓친 반례를 실제 법률로 확인했습니다.
가장 인상적이었던 장면은 강제수단 수집 방식이 뒤집힌 순간이었습니다. 한 설계는 법률 유형에 따라 벌칙, 환수, 강제징수를 서로 다른 방식으로 수집하려 했습니다. 얼핏 합리적으로 보였습니다. 하지만 실제 장애인복지법을 확인하자 급부·지원형 법률 안에 형벌과 환수가 동시에 존재했습니다. 유형별로 하나를 선택하면 중요한 제재가 통째로 사라지는 구조였습니다.
결론은 단순했습니다. 유형에 따라 강제수단을 갈아끼우지 않고, 벌칙·과태료·행정처분·환수·강제징수를 합집합으로 수집해야 했습니다.
이 경험에서 배운 점은 “AI 여러 명을 쓰면 정확해진다”가 아니었습니다. 서로 같은 결론 에 합의시키는 것보다, 자신 있는 주장을 서로 반박하게 하고 실제 데이터로 승부하게 해야 한다는 것이었습니다.
에피소드 2. 맞는 조문번호에 붙은 틀린 수치를 잡다
처음에는 존재하지 않는 조문번호를 막는 검사를 중요하게 생각했습니다. 하지만 더 위험한 오류는 따로 있었습니다.
조문번호가 실제로 존재해도, 본문을 읽지 않은 조문에 비율·기간·금액을 붙이면 실패하도록 검사해줘.
도시정비법 학습가이드 초안을 만들던 중, 구역 지정 조문을 설명하는 문장에 4분의 3이라는 수치가 붙었습니다. 조문번호도 실제로 존재했고, 수치 자체도 법 안에 있었습니다. 문제는 그 수치가 다른 조문에 속한다는 점이었습니다.
사람이 빠르게 읽으면 지나칠 수 있는 문장이었습니다. 그러나 검사기는 “본문을 가져오지 않은 조문을 가리키는 문장에 수치가 함께 등장했다”는 조건으로 이를 실패 처리했습니다. 수치가 어느 조문에 속하는지 다시 명시하자 통과했습니다.
이때 기준이 바뀌었습니다. “없는 조문을 쓰지 말라”에서 멈추면 안 됐습니다. 실재하는 조문에 틀린 내용을 붙이지 말라까지 검사해야 했습니다.
에피소드 3. 모든 것을 자동판정하지 않는 용기
법령마다 구조가 달랐습니다. 장 구분이 없는 평면 법률, 삭제 조문이 절반 이상인 법률, 벌칙이 없는 부담금형 법률도 있었습니다. 하나의 프레임에 맞추려고 규칙을 계속 고치면 다른 법률에서 다시 깨졌습니다.
무작위 법률을 더 분석하고, 외부 근거가 있는 레이블 표본을 만들어 과적합 여부를 확인해줘.
무작위 법률을 추가하자 조직법과 국회 절차법처럼 애초에 이 학습 프레임의 대상이 아닌 법률도 들어왔습니다. 일부는 낮은 신뢰도 신호로 잡혔지만, 기금법처럼 특정 키워드가 많이 등장해 오히려 높은 점수를 받는 사례도 있었습니다.
여기서 임계값을 조금씩 고쳐 100%처럼 보이게 만들 수도 있었습니다. 하지만 표본 두세 개에 선을 맞추는 것은 일반화가 아니라 과적합이었습니다.
그래서 세 가지 원칙을 세웠습니다.
장이 없는 법률, 심장 조문을 역추적할 수 없는 법률을 오류가 아니라 정상 상태로 인정한다.
외부 근거 레이블이 부족한 판정은 자동화하지 않는다.
코드가 맞는지뿐 아니라 실제 법률과 최종 학습가이드를 반복해서 대조한다.
그 결과 두 얼굴 법률 자동 판정은 억지로 완성하지 않고 미판정으로 남겼습니다. 법률 유형이 애매하면 신뢰도와 근거를 노출했습니다. 부담금형에서 강제수단이 실체 조문을 직접 인용하지 않으면 “역추적 불성립”이라고 적었습니다.
불확실성을 숨기지 않는 것이 오히려 도구의 신뢰도를 높였습니다.
전환점: “아, 이렇게 하면 되는구나”
이틀 동안 진행된 개발 로그에서 세 문장이 하나의 원칙으로 합쳐졌습니다.
AI가 답을 잘 쓰게 만드는 것보다 틀릴 수 있는 길을 막는 것이 먼저다.
모든 법률 에 같은 답을 내는 것이 아니라 서로 다른 구조를 안전하게 수용하는 것이 일반화다.
AI의 자신감보다 실제 API·표본·검사 결과를 믿어야 한다.
이 전환점 이후부터는 “이 지표를 어떻게든 맞출까?”보다 “이 판정을 자동화할 근거가 충분한가?”를 먼저 물었습니다. 결과를 화려하게 보이게 하는 것보다, 어디까지 검증됐고 어디서부터 미판정인지 드러내는 데 집중했습니다.
에피소드 4. 앞단 테스트를 통과해도 실제 가이드를 써봐야 했다
수집기와 검사기가 여러 법률에서 잘 돌아가자 거의 끝났다고 생각할 수 있었습니다. 하지만 실제 학습가이드를 만들고 원래의 시범자료와 대조하자, 핵심 지표 하나가 처음부터 잘못됐다는 사실이 드러났습니다.
처음에는 가장 많이 인용된 조문을 법의 심장으로 보았습니다. 그런데 개인정보 보호법에서는 위탁 조문이 더 많이 인용돼, 더 무거운 형벌이 겨냥하는 동의 없는 제공보다 앞에 나왔습니다. 원래 학습 프레임의 방법은 인용 횟수가 아니라 가장 무거운 제재가 겨냥하는 행위를 찾는 것이었습니다.
기준을 바로잡자 여러 골든 법률의 심장 판정이 동시에 맞았습니다. 준용 조문이 심장을 가로채는 문제와 가지 장을 잘못 합치는 구조 오류도 이 단계에서 함께 발견됐습니다.
여기서 또 하나를 배웠습니다. 중간 데이터가 잘 만들어지는 것과 사람이 읽을 최종 결과가 좋은 것은 별개의 문제였습니다. 실제 산출물을 만들고 읽어보는 과정이 마지막 테스트가 아니라 가장 중요한 테스트였습니다.
에피소드 5. 프로젝트를 대화에서 바로 쓰는 스킬로 연결하다
하네스가 완성된 뒤에는 새로운 문제가 생겼습니다. 프로젝트 폴더 안에서만 작동하면 매번 경로와 실행 절차를 기억해야 했습니다. 그래서 기존 구현은 그대로 보존하고, 대화에서 법령명을 말하면 자동으로 불러오는 얇은 스킬 계층을 만들었습니다.
특정 법률을 이야기하면 그 법령에 대한 가이드를 제공하는 스킬로 만들어줘.
이제 사용자는 “공인중개사법 학습가이드 만들어줘”처럼 법령명만 말하면 됩니다. 스킬은 현행 근거를 모으고, 법령 유형을 판정하고, 가이드를 작성한 뒤 검사기가 통과할 때까지 수정합니다.
종단 테스트에서는 공인중개사법을 사용했습니다. 70개 조문을 인덱싱하고 활성 66개 조문의 본문을 반입해 6개 섹션의 학습가이드를 만들었습니다. 최종 검사는 PASS, WARN 0이었습니다.
이 순간 처음의 문제와 결과가 연결됐습니다. 매번 목차와 조문을 여러 차례 왕복하던 자리에서, 이제는 법령명을 한 번 말하면 근거 수집부터 검증된 가이드까지 하나의 흐름으로 이어졌습니다.
✅ 결과: “답변”이 아니라 반복 가능한 절차가 남았다
Before vs After
항목
Before
After
시작 방식
낯선 법령마다 목차·정의·절차·벌칙을 다시 읽음
법령명을 한 번 요청하면 자동 흐름 시작
재사용성
한 법령을 정리해도 다음 법령에서 다시 시작