Queries Korean school lunch menus from the NEIS education portal without making users deal with school codes or API keys. You give it a natural language education office name, a school name, and a date, and it handles the two-step lookup: finding the school via `/school-search`, then fetching the meal data with the resolved codes. The proxy server pattern is smart here since the NEIS API key lives only on the backend, not in client environments. Handles disambiguation when multiple schools match and formats the menu output cleanly instead of dumping raw JSON. Useful if you're building anything for Korean parents, students, or school staff who need meal info without navigating the NEIS portal directly.
npx -y skills add nomadamas/k-skill --skill k-schoollunch-menu --agent claude-codeInstalls into .claude/skills of the current project.
나이스(NEIS) 교육정보 개방 포털의 학교기본정보·급식식단정보를 k-skill-proxy가 중계하는 HTTP API로 조회한다.
/v1/neis/school-search로 학교를 찾고, 응답의 SD_SCHUL_CODE·ATPT_OFCDC_SC_CODE로 /v1/neis/school-meal을 호출한다.KEDU_INFO_KEY)는 프록시 서버에만 두고, 클라이언트는 키 없이 프록시 URL만 호출한다.curl 사용 가능 환경k-skill-proxy에 KEDU_INFO_KEY가 설정된 배포(기본 hosted 또는 self-host)에 접근 가능할 것KSKILL_PROXY_BASE_URL — self-host·별도 프록시를 쓸 때만 설정. 비우면 기본 hosted https://k-skill-proxy.nomadamas.org 를 사용한다.KEDU_INFO_KEY 는 프록시 운영 서버 환경에만 둔다.에이전트는 아래처럼 base 를 정한다.
BASE="${KSKILL_PROXY_BASE_URL:-https://k-skill-proxy.nomadamas.org}"
BASE="${BASE%/}"
다음이 없으면 사용자에게 짧게 묻는다.
서울특별시교육청, 서울, 경기도교육청).미래초등학교, ○○중학교).YYYYMMDD 또는 사용자가 말한 날짜를 한국 시간 기준으로 YYYYMMDD로 정한다. 생략 시 오늘(한국 시간).교육청 표현이 애매해 ambiguous_education_office가 나오면, 응답의 candidate_codes를 보여 주고 더 구체적인 이름(예: 경상북도교육청 vs 경상남도교육청)을 받는다.
/v1/neis/school-search)curl -fsS --get "${BASE}/v1/neis/school-search" \
--data-urlencode "educationOffice=${EDU_OFFICE}" \
--data-urlencode "schoolName=${SCHOOL_NAME}"
EDU_OFFICE, SCHOOL_NAME은 사용자 입력을 그대로 넣어도 된다. 프록시가 교육청명을 코드로 해석한다.resolved_education_office.atpt_ofcdc_sc_code로 실제 매칭된 시도교육청 코드를 확인할 수 있다.schoolInfo 본문에서 row가 여러 개면 사용자에게 **학교명·주소(ORG_RDNMA 등)**를 보여 주고 하나를 고르게 한다.
한 건뿐이면 그 row의 ATPT_OFCDC_SC_CODE, SD_SCHUL_CODE를 다음 단계에 쓴다.
/v1/neis/school-meal)curl -fsS --get "${BASE}/v1/neis/school-meal" \
--data-urlencode "educationOfficeCode=${ATPT}" \
--data-urlencode "schoolCode=${SD}" \
--data-urlencode "mealDate=${YYYYMMDD}"
ATPT / SD는 3단계에서 확정한 코드.mealKindCode=1|2|3 (선택).mealServiceDietInfo 안의 row를 기준으로 요약한다.DDISH_NM 등)의 <br/>는 줄바꿈으로 바꿔 읽기 쉽게 한다.KEDU_INFO_KEY 미설정 → 503 / upstream_not_configured400 / ambiguous_education_officeschool-search → school-meal 순서를 따른다.docs/features/k-schoollunch-menu.md와 docs/features/k-skill-proxy.md를 참고한다.juliusbrussee/caveman
mattpocock/skills
shadcn/improve
obra/superpowers
forrestchang/andrej-karpathy-skills
vercel-labs/skills