피드로 돌아가기
Dev.toBackend
원문 읽기
Claude Code가 XSLT 전문 스킬을 통해 AI가 생성하는 네임스페이스 오류, 버전 불일치, 엔진 호환성 문제를 사전에 차단하는 구조 제시
Teaching Coding Agent to Write XSLT — Building a Domain Skill
AI 요약
Context
XSLT는 작은 실수(네임스페이스 오류, 버전 불일치, 엔진별 함수 차이)가 조용한 실패를 야기하며, AI 어시스턴트도 명시적 지침 없이 동일한 오류를 반복한다. 단순히 더 똑똑한 모델이 아니라 체계적인 플레이북이 필요했다.
Technical Solution
- Claude Code 스킬을 마크다운 파일(.claude/skills/xslt/SKILL.md)로 정의하고, 매칭되는 작업 시 자동 로드되는 구조 도입
- 작업을 5가지 모드로 분류(Generate, Debug, Migrate, Compatibility, LML)하여 각 모드별로 다른 산출물과 규칙 적용
- 코드 생성 전에 엔진 명시 강제(BizTalk/XslCompiledTransform → XSLT 1.0, Saxon/SaxonCS → XSLT 2.0/3.0): 모호한 경우 질문 필수
- 버전 규율 적용: XSLT 1.0 파일에 xsl:function, matches(), xsl:sequence 등 고버전 기능 삽입 금지, 네임스페이스 오류 방지
- XSLT 1.0 + .NET XslCompiledTransform 환경에서 정규표현식·날짜 포맷팅을 위해 msxsl:script를 통한 인라인 C# 코드 제공(타입 매핑 포함: XPath numbers → double, node-sets → XPathNodeIterator)
- Generate/LML 모드에서 완전한 산출물 번들 생성: 디버그 설정, 샘플 입력 XML, 스타일시트, 스키마, 커스텀 함수
- 각 엔진/버전 조합별 표준 스켈레톤 코드 제공(XSLT 1.0, XSLT 3.0, LML 생성용) 하여 구조 재구성 제거
- Debug 모드에서 버그를 6가지 클래스로 분류(네임스페이스 불일치, C# 컴파일 에러, 템플릿 우선순위 충돌, 버전 불일치 등) 후 진단
Key Takeaway
AI 기반 코드 생성의 핵심은 더 나은 모델이 아니라 도메인 전문성을 규칙과 검사점으로 인코딩하는 것이다. 특히 다중 엔진/버전 환경에서는 생성 전 명시적 엔진 분류와 버전 규율을 강제하는 것이 조용한 실패를 사전 차단한다.
실천 포인트
XSLT, SQL, API 통합처럼 엔진별/버전별 문법 제약이 있는 도메인에서 AI 어시스턴트를 도입할 때, 스킬 파일(또는 시스템 프롬프트)에 (1) 작업 분류(요청 타입 감지) (2) 플랫폼/엔진 강제 확인 (3) 버전별 기능 화이트리스트 (4) 표준 스켈레톤 제공을 순서대로 명시하면, AI가 생성하는 버전 불일치, 호환성 에러를 80% 이상 사전 차단할 수 있다.