GitHub Copilot CLI와 함께 공부하기
요약
이 글은 GitHub Copilot CLI를 활용하여 대화형 학습 퀴즈 시스템을 구축한 과정을 설명합니다. 이 리포지토리는 문제 데이터와 이를 이용하는 인터랙티브 퀴즈 스킬로 구성되어 있으며, GH-600 시험 준비 및 영어 질문에 익숙해지는 것을 목표로 합니다. 구축된 퀴즈 스킬은 학습 용도(`immediate-feedback`)와 모의고사 용도(`full-run`) 두 가지 모드를 제공하며, 문제 데이터 추가가 쉽고, 문제/선택지 순서 셔플 기능을 통해 효과적인 복습을 지원합니다.
핵심 포인트
- GitHub Copilot CLI를 활용하여 대화형 학습 및 시험 준비 환경 구축 가능
- 문제 데이터를 리포지토리 자산으로 분리하고 스킬이 이를 읽어오는 구조로 설계 (유연성 확보)
- 학습 목적에 따라 즉시 피드백 모드(`immediate-feedback`)와 전체 풀이 모드(`full-run`)를 선택할 수 있음
- 문제 세트의 정합성을 유지하기 위해 문제문, 답변 맵 등 관련 파일을 하나의 단위로 업데이트하도록 설계함
시작하며
GitHub Copilot CLI 군이, 대화하며 학습을 진행하는 상대가 되어준다면 좋겠다고 생각했습니다.
그래서 공부용 문제집을 Git으로 관리하면서, GitHub Copilot CLI를 통해 대화형 퀴즈로 실행할 수 있는 리포지토리(repository)를 만들어 보았습니다.
이번에 만든 것은 이것입니다.
이 리포지토리에는 주로 다음 두 가지가 들어 있습니다.
- 문제집 데이터
- GitHub Copilot CLI용 repository-local skill
모티베이션
동기는, GH-600 시험 공부를 하고 싶었기 때문입니다.
시험 가이드는 여기 있습니다. (선착순 8% 할인이므로 이득인 기간입니다)
베타 버전 시험이라 Udemy와 같은 문제집도 없고, MS Learn에도 practice exam이 없었습니다...
또한, 이 시험(베타 버전)은 영어로만 응시할 수 있기 때문에, 영어 질문에 익숙해지는 것도 하고 싶었습니다. 그런 점에서 GitHub Copilot CLI 상에서 퀴즈 형식으로 만들어 두면,
- 영어 문제를 그대로 읽기
- 모르는 부분을 그 자리에서 질문하기
- 한 문제씩 복습하기
라는 흐름을 그대로 만들 수 있습니다. ask_user를 사용한 대화와도 궁합이 좋아서, CLI로 푸는 형태가 딱 적당할 것 같다고 생각했습니다.
/ask도 딱 적당합니다. 도중에 끼어들어 영어 단어를 묻거나, 추가적인 해설을 요구할 수 있습니다.
무엇을 만들었는가
구성은 심플합니다.
.
├── .github/
│ └── skills/
...
문제 데이터와 퀴즈 실행 로직을 분리했습니다.
실시간 문제 생성은 하지 않습니다.
Exems/하위에 문제 세트를 배치.github/skills/interactive-exam-quiz/에서 해당 문제를 대화형 퀴즈로 출제.github/skills/author-exam-content/에서 문제 세트 자체를 추가·갱신
GitHub Copilot CLI에 문제문을 직접 삽입하는 것이 아니라, 문제 데이터를 리포지토리의 자산으로 보유하고, skill 측은 그것을 읽기만 하는 형태로 만들었습니다.
특징
1. 문제 데이터를 추가하면, 스킬 본체를 바꾸지 않아도 사용할 수 있음
interactive-exam-quiz는 Exems/<exam-id>/를 보고, 이용 가능한 시험과 세트를 동적으로 찾아내도록 되어 있습니다.
예를 들어 공개 샘플로는 다음과 같은 exam-manifest.json을 가진 SAMPLE-001을 배치해 두었습니다.
- Exam ID:
SAMPLE-001 - 표시 이름:
Public Sample Exam - 세트:
set-01 - 문제 수: 10문제
이 형식을 지켜서 다른 시험 폴더를 추가하면, 스킬 본체를 수정하지 않아도 그대로 출제 대상을 늘릴 수 있습니다.
이 부분은 향후 시험 데이터를 늘리기 용이할 것이라고 생각합니다.
2. 학습 용도와 모의고사 용도로 모드를 나눌 수 있음
퀴즈 실행 스킬은 다음 두 가지 모드를 가지고 있습니다.
full-run / immediate-feedback
full-run
끝까지 한꺼번에 풀고 나서, 한꺼번에 채점하는 모드입니다.
- 실전과 비슷한 감각으로 풀고 싶다
- 도중에 정답을 보고 싶지 않다
- 마지막에 스코어와 약점을 확인하고 싶다
라는 용도에 적합합니다.
immediate-feedback
한 문제를 풀 때마다 즉시 복습할 수 있는 모드입니다.
- 그 자리에서 정오답을 알고 싶다
- 일본어 번역이나 해설을 읽으면서 진행하고 싶다
- 한 문제마다 이해를 다지고 싶다
라는 용도에 적합합니다.
이 모드에서는 각 답변 뒤에 다음과 같은 정보를 반환하도록 했습니다.
- 정답
- 문제문의 일본어 번역
- 현재 선택지 순서에 대응하는 일본어 표시
- 일본어 해설
- 참고 URL
신이 나서 문제를 너무 많이 만들면 끝날 때까지 2시간 정도 걸리기도 하니 주의하세요.
(2시간 동안 해설 없이 계속 푸는 것은 꽤 힘듭니다...)
그럴 때를 위한 immediate-feedback 모드입니다.
3. 매번 문제 순서와 선택지 순서를 셔플할 수 있음
같은 세트를 몇 번이고 풀다 보면 순서로 외워버리게 됩니다.
그래서 퀴즈 스킬에서는 문제 순서 셔플과 선택지 순서 셔플에 대응하고 있습니다.
예를 들어 내부에서는 다음과 같은 명령어로 세트(set)를 불러올 수 있습니다.
powershell -NoProfile -ExecutionPolicy Bypass -File .github\skills\interactive-exam-quiz\scripts\parse-exam.ps1 -ExamId SAMPLE-001 -SetId set-01 -Shuffle -ShuffleOptions
이를 통해 "지난번에는 B였으니까 이번에도 B 같네"와 같이 암기하는 방식을 방지할 수 있습니다.
연습 과정에서 매우 중요하다고 생각합니다 (순서로 외워버리게 되니까요...).
4. 문제 작성 스킬
또 다른 스킬인 author-exam-content는 문제집을 추가하거나 업데이트하기 위한 스킬입니다.
이 스킬에서는 문제를 파일 하나만 작성하는 것이 아니라, 관련 파일들을 한꺼번에 갖추는 것을 전제로 합니다.
questions.md
answers.md
qa-map.json
exam-manifest.json
특히 이런 방식의 메커니즘은 문제문만 수정하고 답변 맵(answer map)이 옛날 상태 그대로 남는 것과 같은 사고가 발생하곤 합니다.
따라서 문제 세트를 하나의 정합된 단위로 업데이트하도록 구성했습니다.
사용법
퀴즈 풀기
리포지토리를 GitHub Copilot CLI로 연 상태에서, 예를 들어 다음과 같이 사용할 수 있습니다.
퀴즈해줘
또는 구체적으로,
SAMPLE-001 을 immediate-feedback 모드로 풀고 싶어
그러면 스킬 측에서 다음과 같은 흐름을 진행합니다.
Exams/하위에서 이용 가능한 시험을 탐색 - 퀴즈 모드 선택- 세트 선택
- 문제를 한 문제씩 출제
- 모드에 따라 즉시 복습하거나 마지막에 한꺼번에 채점
ask_user를 사용할 수 있다면 폼(form)처럼 답변할 수 있고, 그렇지 않은 경우에도 텍스트로 그대로 진행할 수 있도록 했습니다.
문제 추가하기
문제 작성 측면에서는 예를 다음과 같은 요청을 상정하고 있습니다.
SAMPLE-001 に set-02 を追加して
이 시험을 위한 문제를 10개 만들어줘. questions.md와 answers.md, qa-map.json까지 모두 갖춰서
수중에 자료나 URL이 있다면, 그것을 그대로 전달하여 문제집의 원천 자료로 사용할 수 있습니다.
- 시험 가이드나 제품 문서의 URL을 전달
- Research 명령으로 범위나 논점을 조사하도록 함
- 그 조사 결과를 바탕으로
author-exam-content로 문제 세트 생성 - 완성된 문제를
interactive-exam-quiz로 실제로 풀기
/research 이 URL들을 바탕으로 GH-600 문제집을 만들고 싶어. 논점이나 중요해 보이는 부분을 정리해줘
이 자료를 바탕으로 10문제를 만들어줘. questions.md와 answers.md, qa-map.json까지 모두 갖춰서
이때 author-exam-content는 퀴즈 스킬이 읽을 수 있는 형식을 유지하면서, questions.md, answers.md, qa-map.json, 그리고 필요하다면 exam-manifest.json까지 일괄 업데이트해 줍니다.
자료 전달 → Research로 조사 → 문제화 → 풀기로 이어지는 흐름이 매우 좋습니다.
중단도 가능
사소하지만 편리하기 때문에 넣어두었습니다.
문제 수가 많은 세트라면 한 번에 끝까지 풀지 못할 수도 있고, immediate-feedback 모드로 복습하며 진행하면 생각보다 시간이 오래 걸립니다.
따라서 퀴즈 실행 스킬에서는 중간 리뷰 타이밍에 next뿐만 아니라 interrupt도 선택할 수 있도록 했습니다.
interrupt를 선택하면 거기서 일단 멈추고, 다음에 동일한 세트를 선택했을 때 이어서 재개할 수 있습니다. (답변마다 기록하므로, Esc 키로 중단해도 진행 상황이 저장됩니다)
요약
GitHub Copilot CLI를 공부 파트너로 삼는 것도 좋은 방법입니다.
이번 구성에서는,
- 문제 데이터는
Exams/에 배치 - 퀴즈 실행은
interactive-exam-quiz - 문제 작성은
author-exam-content
책임을 분리함으로써 확장하기 쉬울 것이라고 생각합니다.
관심이 있다면 꼭 시도해 보세요.
여담
답변에 Ask_User 도구를 사용하도록 설정해서인지, 문제 세트 하나를 수행하는 데 소비되는 프리미엄 요청 (Premium Request) 수는 1이었습니다.
저의 경우, 65문제를 약 2시간 동안 풀었지만 요청 수는 1로 유지되었습니다 (정말 감사합니다~).
AI 자동 생성 콘텐츠
본 콘텐츠는 Zenn AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기