“이 분 휴직 중인데요?” ... 클로드 코드 & Spec Kit으로 교육 직전 취소 줄이는 교육 대상자 선정 도구 만들기

문제 인식: 교육 대상자 선정의 비효율성

기업교육 담당자로 고객사의 연차별 직원 역량교육을 운영하던 때의 일입니다.
매 교육 직전마다 최소 1명씩 당일 참석 취소가 생겼고, 그때마다 촉박하게 명단을 고친 후 다시 강사님과 다른 담당자들에게 안내해야 하는 번거로운 일이 반복됐습니다.

예를 들어 '입사 3년차 교육(상반기)'이면 고객사 연수원 시스템에 3년차 직원 전원이 해당 교육 대상자로 일괄 등록됩니다.

문제는 시스템상 한계로 휴직 중인 직원이나 이미 교육을 수강한 직원이나 교육일 전에 퇴사할 예정인 직원처럼 애초에 참석할 수 없는 사람들이 필터링되지 않고 대상자 명단에 섞여 있었다는 점입니다.

이 중 일부는 교육이 임박해서야 자신이 대상자라는 걸 알고 불참을 알려 왔습니다. 취소 한 건이 생길 때마다 명단 수정, 재안내, 교육장 내 배치 변경 같은 일이 한꺼번에 생겼습니다.

원인을 따라가 보니 필요한 정보가 없었던 게 아니었습니다. 재직 여부는 인사 자료에, 이수 이력은 교육 자료에 각각 관리되고 있었습니다. 다만 교육 대상자를 시스템상으로 등록할 때 두 자료가 연동되지 않았고 고객사 시스템 내 연차 조건 하나만 적용해 대상자 명단을 만들었던 것이 문제였습니다.

위와 같은 비효율성을 인식하고 '교육 연차 조건에 해당하는 사람'과 '실제로 교육을 받아야 하고 참석할 수 있는 사람'은 다르다는 생각에서 프로그램 제작을 결심하게 되었습니다. 인사 정보와 이수 이력을 미리 연결해 대상, 제외, 확인 필요로 나눠 둔다면 교육 직전의 취소와 반복되는 명단 수정을 줄일 수 있다고 봤습니다.

2주차 스터디 오프라인 모임에서 배운 대시보드 제작 가이드를 바탕으로 해당 도구를 처음 만들었고, 이번 3주차에는 스터디에서 배운 Spec Kit으로 툴을 다시 다듬어 보기로 했습니다.

해결: 클로드 코드로 대시보드 제작

아래 요청사항과 3주차 에이스님의 사례게시글 프롬프트를 클로드 코드(Claude Code)에 붙여 넣고 스펙 킷 활용을 요청했어요.

상황: 의무 교육(예: n년차 교육)은 조건만 맞으면 일괄 등록
문제: 휴직자 등 참석이 어려운 사람까지 들어가고, 본인은 뒤늦게 알게 됨
결과: 교육 직전 취소, 자리와 비용 낭비, 운영 담당자 업무 증가화면 예시: 교육 대상자 선정 대시보드
조건 설정: 연차, 직급, 부서 등으로 1차 대상자 자동 추출
상태 점검: 휴직, 파견, 퇴사 예정, 최근 동일 교육 이수자를 자동으로 걸러 "제외" 또는 "확인 필요"로 표시
사전 안내 관리: 본인과 팀장에게 안내했는지, 확정인지 보류인지 표시
요약 지표: 최종 확정 인원, 제외 사유별 인원, 사전에 막은 취소 건수
데이터: 가짜 예시 데이터 (엑셀 파일) 만들어서 검증

[프로젝트 폴더]의 [PRD 파일]을 읽고 Spec Kit 순서로 진행해줘.
PRD에 없는 내용은 추측하지 말고 “확인 필요”로 표시해줘.
핵심 기능은 [3개]로 제한하고 제외 기능도 명시해줘.
specify로 성공 조건을 만들고 plan으로 구현 방법을 정해줘.
tasks는 한 작업에 한 목표만 두고 브라우저 확인을 붙여줘.
implement는 가장 중요한 기능부터 진행해줘.
마지막에 명세와 실제 화면을 비교해 테스트해줘
비밀번호, API 키, 불필요한 임시 파일이 들어가지 않았는지 확인해줘.

명세에서 애매한 조건은 표시해 두고 나한테 먼저 물어봐.
analyze와 converge 결과는 고치기 전에 보여 줘.
확인은 실제 데이터 대신 가상 데이터로만 해 줘.

스펙 킷은 나온 지 2주 된 1.1.3 버전으로 설치했어요. 진행은 아래 순서를 그대로 따랐어요.

  • constitution: 원칙 5개를 먼저 정했어요. 저장하지 않기, 밖으로 보내지 않기, HTML 파일 하나로 만들기가 들어가요.

  • specify: 무엇을 만족해야 끝인지 요구사항 14개로 적었어요.

  • plan과 tasks: 만드는 방법을 정하고, 작업 18개마다 확인 방법을 붙였어요.

  • analyze: 만들기 전에 문서끼리 대조해서 보완할 점 4개를 고쳤어요.

  • implement와 converge: 하나 만들 때마다 확인하고, 다 만든 뒤 명세와 결과물을 비교해 남은 일 3개를 처리했어요.

명세 단계에서의 도전과 해결

한 번에 다 만들지 않고 기능을 둘로 나눠 제작했습니다. 첫 기능은 문제의 출발점인 휴직자 거르기만 맡고, 두 번째 기능이 퇴사 예정, 이수, 파견을 맡았어요. 작은 첫 기능으로 스펙 킷 순서를 먼저 한 바퀴 돌려 보고, 같은 순서를 두 번째 기능에 다시 쓰는 방식이에요.

처음 준 조건 중 하나는 "날짜가 비어 있으면 확인 안내 문구를 띄운다"였어요. 명세를 쓰는 중에 이 문장에 질문 표시가 붙었어요.

[NEEDS CLARIFICATION: "날짜가 비어 있으면"이 교육 시작일만 뜻하는지, 직원의 입사일, 복귀예정일이 빈 경우까지 포함하는지]

이 구분이 중요한 이유는 계산이 날짜에 달려 있어서예요. 입사일이 비면 연차를 계산할 수 없고, 휴직자의 복귀예정일이 비면 교육일에 복귀하는지 알 수 없어요. 교육 시작일만 확인하면 이런 사람은 아무 안내 없이 명단에서 빠지거나 잘못 남을 수 있어요.

이때 교육 시작일과 직원 날짜를 모두 보기로 답했어요. 그래서 교육 시작일이 비면 결과를 숨기고, 입사일이 빈 사람은 연차 계산에서 빼서 사번으로 알려 줘요. 같은 단계에서 교육 시작일 전에 복귀하는 휴직자를 어떻게 볼지도 물어 와서 '확인 필요'로 따로 두는 쪽을 골랐어요.

한국어 숫자가 포함된 스프레드시트 스크린샷
입사일이 빈 직원 2명과 중복 사번을 알려 주는 대상자 선정 도구 화면

▲ 예시 엑셀 파일과 일부러 지저분하게 만든 테스트 파일이에요. 입사일이 비었거나 읽을 수 없는 사람을 사번으로 알려 줘요.

두 번째 기능: 퇴사 예정자, 이수 여부, 파견 규칙

첫 기능이 끝난 뒤 같은 순서로 두 번째 기능을 이어 붙였어요. 이번 명세에서는 질문이 3개 나왔고, 질문마다 정해야 하는 이유가 있었어요.

  • 교육 종료일이 비면: 교육 전에 퇴사하는지 보려면 교육이 끝나는 날을 알아야 해요. 그래서 종료일이 비면 안내 문구를 띄우고 결과를 숨기기로 했어요.

  • 이수 과정명 비교: 이수이력에는 신입사원 입문교육 같은 다른 과정도 섞여 있어요. 과정명을 보지 않으면 다른 교육만 들은 2명도 제외돼요. 그래서 띄어쓰기만 빼고 모두 같으면 같은 과정으로 보기로 했어요.

  • 규칙이 겹치면: 휴직 중인데 이미 이수한 사람처럼 한 사람에게 규칙이 여러 개 걸릴 수 있어요. 판정은 가장 강한 조건 하나로 하고 사유는 모두 보여 주기로 했어요.

한국사이트 스크린샷

결과: 필터 가능한 도구 완성

엑셀을 고르고 교육 날짜와 과정명을 넣으면, 3년차 30명 중 6명이 제외되고 4명이 확인 필요로 남아요. 제외는 휴직 미복귀, 교육 전 퇴사 예정, 같은 과정 이수이고, 확인 필요는 파견, 교육 직전 복직, 교육 후 퇴사 예정이에요.

예시 직원 30명 중 제외 6명, 확인 필요 4명, 대상 20명이 나온 결과 화면

▲ 규칙 확인용 테스트 엑셀 결과예요. R004는 휴직 미복귀와 같은 과정 이수가 겹쳐 사유가 두 개 보여요.

결과: 명세와 실제 화면 일치

엑셀을 고르고 교육 날짜와 과정명을 넣으면, 3년차 30명 중 6명이 제외되고 4명이 확인 필요로 남아요. 제외는 휴직 미복귀, 교육 전 퇴사 예정, 같은 과정 이수이고, 확인 필요는 파견, 교육 직전 복직, 교육 후 퇴사 예정이에요.

한국사이트 스크린샷

▲ 가상 직원 40명 예시 엑셀로 2026년 11월 19일 교육, 3년차 기준으로 돌린 결과예요.

  • 결과물: HTML 파일 하나라 더블클릭으로 열리고, 읽은 내용은 저장하거나 밖으로 보내지 않아요. (보안을 신경썼습니다.) 미리 작성해둔 명세와도 같습니다.

  • 작업 수: 첫 기능 21개, 두 번째 기능 17개

  • 자동 확인: 124개 모두 통과

  • 직원 5,000명 엑셀: 브라우저에서 읽고 판정하기까지 0.63초

  • 걸린 시간: 스펙 킷 시작부터 두 번째 기능 완성까지 약 1시간

제작 방식의 개선점

  • 지난 번엔 첫 버전을 만든 뒤 "데이터가 저장돼?"라는 질문이 나와 구조를 다시 짰는데, 이번엔 저장하지 않는다는 원칙을 처음에 정하고, 애매한 조건은 만들기 전에 질문으로 정리했어요.

  • 지난 주에는 다 만든 뒤 완성 기준 17개를 확인했는데, 이번에는 작업마다 확인하고, 다 만든 뒤 명세와 결과물을 한 번 더 비교했어요.

  • 지난 대시보드 제작 시에는 PRD, 자료, 화면, 테스트 순서를 직접 프롬프트로 매번 챙겼는데 이번에는 이 순서를 명령어로 미리 정해 뒀습니다.

인사이트와 남은 과제

  • 교육 직전 바쁜 시기에 일일히 해당 교육생한테 전화 돌려서 결석 여부 확인하지 않아도 될 것으로 보여 효울적이고 편리할 것 같습니다.

  • 오로지 필요를 고려해서 만들긴 했지만 개인정보 이슈가 매우 마음에 걸립니다.
    이번에는 더미 데이터로 실험했지만 어디까지가 안전한 선일지 의문이 남았습니다. 회사 자체 AI 생태계가 활성화되어 있지 않은 한 그냥 외부 AI에 돌리는 건 개인정보 노출 위험이 있다고 생각했습니다. (클라우드? 온라인?으로 퍼블리싱한다면 훨씬 공유가 편할 것 같긴 합니다...)

  • 내부 시스템 자체에서 작업을 하는 것이 아니라 이런 매크로(?)를 활용해서 매번 엑셀 파일을 돌려야 한다는 점이 좀 번거로울 수도 있겠다는 생각이 들었습니다.

  • 디자인 개선을 할 수 있겠다는 생각도 들고, 클로드한테 질문해서 더 필요한 기능도 추가해보고 싶습니다.

참고 자료

Spec Kit으로 PRD부터 MVP까지 차근차근 만들기 (에이스님)

https://www.gpters.org/nocode/post/spec-kiteuro-prdbuteo-mvpggaji-cageuncageun-mandeulgi-a8dfbCCvluw4qxK

2
1개의 답글
지피터스 뉴스레터

이번 주 AI, 딱 쓸 것만

매주 월요일 오후,
읽고 바로 써먹을 AI 소식만