02 · monthly-close-brief Skill 실습
강의 자료
Download
Monthly_Close_Brief.zip 전체 실습 자료 다운로드
Monthly_Close_Brief.zip을 실제 작업 폴더 안에 압축 해제합니다. 포함된monthly-close-brief는 지역 Skill로 자동 인식됩니다.
1. 실습 목표
- 압축을 푼 폴더에서
monthly-close-brief지역 Skill이 자동으로 인식되는지 확인합니다. - 파일명이 아니라 열 제목으로 분개장만 식별해 2021년 10월을 분석합니다.
- 주요 계정, 특이 거래, 신규 거래처, 월별 추이와 데이터 품질을 7개 시트 Excel로 만듭니다.
- 원본 분개장과 기준 산출물로 행 수, 차변·대변과 주요 지표를 대조합니다.
- 제공된
SKILL.md를 열어 frontmatter, 실행 절차와 불변 조건이 어떻게 쓰였는지 확인합니다. - 읽는 검토와 돌려 보는 검토로 Skill을 점검하고, 어긋난 동작을 불변 조건으로 되먹입니다.
2. 입력과 출력 계약 확인
입력 폴더에는 다음 자료가 있습니다.
| 구분 | 파일 | 분석에서의 역할 |
|---|---|---|
| 분개장 | 분개장_2020년.xlsx, 분개장_2021년.xlsx | 월별 거래 분석의 원본 |
| 시산표 | 시산표_2020년.xlsx, 시산표_2021년.xlsx | 12월 손익 항목 대사 |
| 재무제표 | 재무제표_2021년.xlsx | 파일 식별 과정에서 자동 제외 |
| 기준 산출물 | monthly-close-brief_2021-11-accounting.xlsx, monthly-close-brief_2021-12-accounting.xlsx | 후속 실습과 형식 대조용 |
분개장으로 인식되려면 날짜, 차변, 대변과 계정명 또는 계정코드 열이 있어야 합니다. 필수 열이 모호하거나 중복되면 추정하지 않고 실패해야 합니다.
3. 월마감 Excel 생성
압축을 푼 Monthly_Close_Brief 폴더를 연결한 새 대화에서 다음 프롬프트를 입력합니다. ZIP에 포함된 기준 산출물은 덮어쓰지 않습니다.
monthly-close-brief 스킬을 활용해서 실제 분개장데이터 폴더 상 2021년 10월 분개장을 분석해줘.
Python 스크립트는 실습 준비 때 바탕화면에 만든 `finance-ai-practice` 폴더의 `.venv\Scripts\python.exe`로 실행해줘. 작업을 시작하기 전에 이 파일의 실제 절대경로를 확인하고, 스킬에 적힌 `python` 실행 명령도 이 파일로 바꿔 실행해줘. 파일이 없으면 다른 Python을 쓰지 말고 알려줘.4. 예상 결과와 대조
생성 파일에는 다음 시트가 순서대로 있어야 합니다.
| 시트 | 확인할 내용 |
|---|---|
00_요약 | 대상 월, 차대 검증, 월 손익 추정과 주요 분석 사항 |
01_주요계정 | 정상잔액 기준 당월 순증감과 전월·전년 동월 비교 |
02_특이거래 | 고액·중복·반대분개·키워드 거래와 원본 위치 |
03_신규거래처 | 최초 거래일, 손익 영향, 최대 전표금액과 관련 계정 |
04_월별추이 | 최근 13개월 계정별 차변·대변·순증감 |
05_데이터품질 | 처리 결과, 누락, 차대 차이와 시산표 대사 |
06_대상월원장 | 정규화된 원장과 원본 파일·시트·행 번호 |
2021년 10월 기준 산출물은 ZIP에 별도로 제공되지 않습니다. 생성된 Excel의 00_요약, 05_데이터품질, 06_대상월원장을 원본 분개장과 대조해 대상 월, 행 수, 차변·대변과 추적 정보를 직접 검증합니다. 10월은 12월이 아니므로 시산표 대사는 확인 항목으로 남기며, 분개 발생액에 따른 관리 목적 추정치를 확정 재무제표 금액으로 표현하지 않습니다.
Success
- 출력 시트가 정확히 7개이며 이름과 순서가 일치함
- 대상 월이
2021-10이고 당월 차변·대변이 일치함06_대상월원장에서 모든 행을 원본 파일·시트·행으로 추적할 수 있음- 신규 거래처와 특이 거래를 확정 오류로 표현하지 않음
- 기준 산출물을 덮어쓰지 않고
output에 새 파일을 만듦
5. SKILL.md 작성 방법
5-01에서는 대화를 쌓아 Skill을 만들었습니다. 여기서는 이미 완성된 monthly-close-brief의 SKILL.md를 열어 잘 쓰인 Skill이 어떤 모양인지 확인합니다. 작업 폴더의 .claude/skills/monthly-close-brief/SKILL.md를 그대로 열어 두고 읽습니다.
5-1. 전체 분량을 먼저 봅니다
| 파일 | 분량 | 역할 |
|---|---|---|
SKILL.md | 38행 | 언제 쓰는지, 무엇을 지켜야 하는지 |
references/input-schema.md | 20행 | 입력 열을 인식하지 못할 때만 읽는 규격 |
references/output-contract.md | 35행 | 시트와 지표 의미를 설명할 때만 읽는 계약 |
scripts/build_monthly_close.py | 686행 | 실제 집계와 Excel 생성 |
계산 로직 686행 중 SKILL.md에 들어간 것은 38행뿐입니다. SKILL.md는 설명서가 아니라 판단 기준입니다. 매번 똑같이 계산되어야 하는 부분은 스크립트로 내리고, 사람이 상황을 보고 정해야 하는 부분만 SKILL.md에 남깁니다.
5-2. frontmatter는 트리거 문장입니다
---
name: monthly-close-brief
description: 분개장 XLSX를 월별로 분석해 주요 계정, 특이 거래, 신규 거래처, 월별 추이와 데이터 품질을 정리한 PPT 기초자료용 Excel을 만든다. 월마감·결산 보고 자료 요청에 사용한다.
---description은 Skill을 쓸지 말지 판단하는 유일한 근거입니다. 본문은 이 Skill이 선택된 뒤에야 읽히므로, 여기에 두 가지가 모두 있어야 합니다.
- 무엇을 만드는가 — “분개장 XLSX를 월별로 분석해 … Excel을 만든다”
- 언제 부르는가 — “월마감·결산 보고 자료 요청에 사용한다”
두 번째 문장이 없으면 사용자가 “이번 달 결산 자료 좀 정리해줘”라고만 말했을 때 Skill이 선택되지 않습니다. 사용자가 실제로 쓰는 말과 파일 형식 이름을 함께 넣습니다.
5-3. 본문은 정해진 형식이 없습니다
frontmatter와 달리 --- 아래 본문에는 강제되는 형식이 없습니다. 제목을 몇 개 두든, 무엇이라고 부르든 상관없습니다. monthly-close-brief가 쓴 ## 실행과 ## 불변 조건도 규격이 아니라 이 Skill 작성자가 고른 이름입니다.
다만 이름은 자유롭더라도 두 덩어리가 하는 역할은 대부분의 Skill에 필요합니다. 순서대로 할 일이 없으면 매번 다른 경로로 일을 처리하고, 하면 안 되는 일이 없으면 같은 실수가 반복됩니다. 절차만 적힌 Skill이 두세 번 돌려 보면 무너지는 지점이 대개 후자입니다.
할 일은 관찰 가능한 동작으로 씁니다
1. 사용자가 지정한 `YYYY-MM`을 대상 월로 사용한다. 없으면 데이터의 최신 월을 사용하고 결과에 표시한다.
2. 파일명이 아니라 헤더를 검사해 분개장 시트만 식별한다. 원본은 수정하지 않는다.각 항목에서 세 가지를 확인합니다.
- 기본값이 정해져 있는가 — 1번은 대상 월이 없을 때 무엇을 할지까지 정해 두었습니다. 이런 문장이 없으면 매번 되묻거나 임의로 고릅니다.
- 판단 근거가 지정되어 있는가 — 2번은 “분개장을 찾는다”가 아니라 “파일명이 아니라 헤더로 식별한다”입니다. 실습 폴더에
재무제표_2021년.xlsx가 섞여 있어도 자동으로 빠지는 이유가 이 한 줄입니다. - 검증 게이트가 있는가 — 5번의
"status": "PASS"일 때만 Excel을 전달한다는 조건이 그것입니다. 실패했는데 결과를 내놓는 상황을 막습니다.
하면 안 되는 일은 겪어 본 실패로 씁니다
이 Skill에서 가장 긴 부분이 불변 조건 10개입니다. 몇 개만 다시 읽어 봅니다.
| 불변 조건 | 이 문장이 막는 상황 |
|---|---|
| 숫자를 직접 추정하거나 다시 계산하지 말고 스크립트 결과를 사용한다 | 스크립트를 돌리고도 답변에서 금액을 다시 어림해 보고서와 Excel이 어긋남 |
| 계정코드와 사업자번호는 문자열로 보존한다 | 9001000096이 숫자로 바뀌며 앞자리 0이 사라지거나 지수 표기로 깨짐 |
비교 기간이 없으면 증감률을 만들지 않고 비교불가로 둔다 | 2020년 1월처럼 전월이 없는 달에 0을 기준으로 한 무의미한 증감률이 생김 |
과거 자료가 없으면 신규 거래처로 단정하지 않고 판단불가로 표시한다 | 데이터 범위가 짧다는 이유만으로 기존 거래처를 신규로 보고함 |
| 특이 거래는 오류로 단정하지 말고 검토 사유를 표시한다 | 금액이 크다는 이유로 정상 거래가 부정 사례처럼 보고됨 |
| 차변과 대변의 절대값을 합친 임의의 활동 지표를 만들지 않는다 | 회계적으로 의미 없는 “총거래액” 같은 지표가 보고서 상단에 올라감 |
공통점은 모두 한 번 겪어 본 실패를 문장으로 굳혔다는 것입니다. 불변 조건은 상상해서 쓰는 것이 아니라 실행 결과를 보고 늘려 가는 항목입니다. 확인 필요와 판단불가 같은 도피 값도 여기서 정의합니다.
업무에 맞게 덩어리를 늘립니다
두 덩어리는 어디에나 맞는 기본형일 뿐 정답이 아닙니다. 규정 인용이 중요한 업무라면 인용 규칙을, 산출물이 복잡하면 보고서 구조를 별도 제목으로 두는 편이 낫습니다. 5-01에서 만든 전표 검토 Skill에 판정 3분류와 보고서 구조가 따로 들어간 것도 같은 이유입니다.
5-4. 참조 문서는 조건을 붙여 연결합니다
입력 필드가 인식되지 않을 때만 references/input-schema.md를 읽는다.
산출 지표나 시트 의미를 설명할 때는 references/output-contract.md를 읽는다.“참고하세요”가 아니라 읽는 조건이 붙어 있습니다. 조건이 없으면 매번 모든 참조 문서를 읽어 정작 중요한 지시가 묻힙니다. 본문에서 다 설명하려 하지 말고, 필요할 때만 펼치도록 나눕니다.
5-5. 형식 제한 조건
앞의 다섯 가지가 잘 쓰는 방법이라면, 여기서부터는 지키지 않으면 Skill이 인식되지 않거나 성능이 떨어지는 제한 조건입니다. Claude가 정한 규격이므로 취향으로 바꿀 수 없습니다.
frontmatter에 쓸 수 있는 항목
name과 description만 필수이고, 나머지는 선택입니다. 목록에 없는 항목을 넣으면 검증에서 실패합니다.
| 항목 | 필수 | 제한 |
|---|---|---|
name | 필수 | 소문자·숫자·하이픈만. 64자 이하. 하이픈으로 시작·종료 불가, 연속 하이픈 불가 |
description | 필수 | 1024자 이하. <와 > 사용 불가 |
allowed-tools | 선택 | Skill이 쓸 도구를 제한할 때만 |
compatibility | 선택 | 500자 이하. 필요한 도구나 의존성 |
license | 선택 | 라이선스 표기 |
metadata | 선택 | 하위 키는 자유 |
monthly-close-brief가 name과 description 둘만 쓴 이유가 여기 있습니다. 선택 항목은 필요할 때만 넣습니다.
Warning
name은 폴더명과 같아야 합니다..claude/skills/monthly-close-brief/이면name: monthly-close-brief입니다.월마감_스킬처럼 한글이나 밑줄을 쓰면 인식되지 않습니다. 폴더 이름은 영문 kebab-case로 두고, 한글 설명은description과 본문에 씁니다.
분량 제한
Skill은 세 단계로 나누어 읽힙니다. 단계마다 비용이 다르므로 무엇을 어디에 둘지가 곧 성능입니다.
| 단계 | 언제 읽히는가 | 권장 분량 |
|---|---|---|
name + description | 항상 대화에 올라가 있음 | 100단어 안팎 |
| SKILL.md 본문 | Skill이 선택된 뒤에만 | 500행 이하 |
references/, scripts/, assets/ | 필요할 때만 | 제한 없음 |
description이 항상 올라가 있다는 점이 중요합니다. 여기에 절차나 판정 기준을 적으면 Skill을 쓰지 않는 모든 대화에서도 그만큼 자리를 차지합니다. “언제 쓰는가”만 남기고 “어떻게 하는가”는 전부 본문으로 내립니다.
본문이 500행에 가까워지면 줄이는 것이 아니라 계층을 하나 더 만듭니다. references/로 나누고, 본문에는 언제 그 문서를 읽어야 하는지만 남깁니다. 참조 문서가 300행을 넘으면 문서 첫머리에 목차를 넣어 필요한 부분만 찾아 읽게 합니다.
폴더 구조
.claude/skills/<skill-name>/
├── SKILL.md # 필수
├── scripts/ # 매번 같은 결과가 나와야 하는 처리
├── references/ # 필요할 때만 읽는 설명
└── assets/ # 결과물에 들어가는 템플릿·서식 파일세 폴더의 구분은 읽히는 방식이 다르기 때문입니다. scripts/는 실행만 하면 되므로 내용을 읽지 않고, references/는 조건이 맞을 때 읽고, assets/는 결과물에 그대로 들어갑니다. 월마감 집계 686행이 scripts/에 있는 것도 같은 이유입니다. 이 코드를 본문에 옮기면 매번 읽히면서 정작 불변 조건이 묻힙니다.
트리거 문장은 밀어붙여 씁니다
현재 Claude는 쓸 수 있는 Skill을 쓰지 않고 넘어가는 쪽으로 치우쳐 있습니다. 그래서 description은 겸손하게 쓰면 안 됩니다.
| 약한 표현 | 밀어붙인 표현 |
|---|---|
| 월마감 자료를 만드는 스킬 | 분개장 XLSX를 월별로 분석해 … Excel을 만든다. 월마감·결산 보고 자료 요청에 사용한다. |
| 대시보드를 만드는 방법 | 대시보드를 만드는 방법. 사용자가 대시보드, 시각화, 지표 조회를 언급하면 ‘대시보드’라는 말을 쓰지 않더라도 반드시 이 스킬을 사용한다. |
사용자가 실제로 쓸 법한 표현을 나열해 주는 것이 요령입니다. “결산”, “월마감”, “마감 자료”처럼 같은 업무를 부르는 다른 말을 함께 넣습니다.
지켜야 할 선
Skill은 사용자가 설명을 듣고 예상한 대로만 동작해야 합니다. 이름과 설명에 없는 일을 하거나, 원본을 조용히 바꾸거나, 자료를 외부로 보내는 동작을 넣지 않습니다. 이번 실습의 Skill이 “원본은 수정하지 않는다”를 절차와 불변 조건에 모두 적어 둔 것도 같은 이유입니다.
6. SKILL.md 검토 방법
Skill을 만든 뒤에는 반드시 검토합니다. 읽어서 통과시키는 검토와 실제로 돌려 보는 검토를 나누어 진행합니다.
6-1. 읽으면서 확인하는 항목
.claude/skills/monthly-close-brief/SKILL.md를 기준으로 하나씩 대봅니다.
-
name이 폴더명과 같고 소문자·숫자·하이픈으로만 되어 있다. - frontmatter에 허용된 항목(
name,description,allowed-tools,compatibility,license,metadata)만 있다. -
description이 1024자 이하이고<,>를 쓰지 않았다. -
description에 무엇을 만드는지와 언제 쓰는지가 모두 있다. -
description이 파일 형식 이름 없이 업무 용어(“월마감”, “결산 보고”)로도 걸린다. - 모든 절차가 관찰 가능한 동작이며, “적절히”, “필요시” 같은 판단 유보 표현이 없다.
- 값이 없거나 비교 대상이 없을 때의 기본값과 표시 문구가 정해져 있다.
- 결과를 사용자에게 전달하기 전 통과 조건이 있다.
- 원본을 수정하지 않는다는 범위 제한이 있다.
- 확정으로 말하면 안 되는 항목(특이 거래, 신규 거래처, 추정 손익)이 명시되어 있다.
- 참조 문서마다 읽는 조건이 붙어 있다.
- 본문이 500행 이하이고, 넘으면
references/로 계층을 나누었다. - 이름과 설명에 없는 동작(원본 수정, 외부 전송)이 들어 있지 않다.
- 계산 규칙이 SKILL.md와 스크립트에 중복해서 적혀 있지 않다.
마지막 항목이 자주 놓치는 부분입니다. 같은 규칙을 두 곳에 적으면 한쪽만 고쳤을 때 서로 다른 답이 나옵니다.
6-2. 돌려 보면서 확인하는 항목
읽기만으로는 Skill이 실제로 선택되는지, 경계에서 어떻게 움직이는지 알 수 없습니다. 작성자가 아닌 사람의 말투로 새 대화를 열어 직접 돌려 봅니다.
Skill 이름을 부르지 않고 업무 용어만으로 시작해 선택되는지, 대상 월처럼 빠뜨리기 쉬운 값을 생략했을 때 정해 둔 기본값을 쓰는지, 실행 뒤 원본 폴더가 그대로인지를 확인합니다.
무엇보다 경계를 넣어 봅니다. 정상 입력은 대개 통과하므로, 비교 대상이 없는 달, 값이 비어 있는 열, 이미 존재하는 출력 파일 이름처럼 규칙이 흔들리는 지점을 골라 넣습니다.
6-3. 검토 결과를 Skill에 되먹입니다
어긋난 동작을 발견하면 그 자리에서 프롬프트로 바로잡고 싶어집니다. 하지만 그렇게 고친 내용은 그 대화에만 남습니다. 다음에 같은 일을 시키면 문제가 그대로 되풀이됩니다.
고칠 곳은 대화가 아니라 SKILL.md입니다. 어긋난 동작을 불변 조건 한 문장으로 바꾸어 추가한 뒤, 같은 상황을 다시 실행해 이번에는 지켜지는지 확인합니다. 이렇게 한 문장씩 쌓인 결과가 앞에서 읽은 불변 조건 10개입니다.
Warning
Skill을 수정할 때는 기존 문장을 지우기 전에 그 문장이 막고 있던 상황이 무엇인지 확인합니다. 불변 조건은 대부분 과거의 실패 기록이며, 이유를 모른 채 지우면 그 실패가 그대로 돌아옵니다.
7. 결과 해석 질문
Excel을 열고 다음 질문에 답합니다.
- 정상잔액 기준 순증감 절대값이 가장 큰 계정은 무엇인가?
- 추정 세전손익의 전월 대비 증감에 가장 큰 영향을 준 손익 항목은 무엇인가?
- 신규 거래처 중 손익 영향 절대값이 큰 상위 3개는 무엇인가?
- 특이 거래 중 어떤 항목은 규칙만으로 설명되고, 어떤 항목은 담당자 확인이 필요한가?
- 10월 시산표 대사가 없는 비교 제약을 보고서에서 어떻게 표현해야 하는가?