Imported from chaconne67/controlroom (
.controlroom/skills/agent-script-role/SKILL.md). Install upstream withnpx skills add chaconne67/controlroom --skill agent-script-role. Copyright stays with the author.
Agent Script Role
목적
LLM과 스크립트의 책임을 분리한다. 의미 판단을 분기·점수·휴리스틱으로 코드에 굳히지 않고, 스크립트가 필수 결과의 실패를 정상값으로 숨기지 못하게 한다.
이 스킬은 역할 분리만 다룬다. 프롬프트의 문구와 구조는 $prompt-guide를 함께 적용한다.
역할 경계
| LLM이 맡을 일 | 스크립트가 맡을 일 |
|---|---|
| 문맥과 의미 해석 | LLM 호출과 입출력 전달 |
| 같은 대상인지, 적절한지 등 의미적 판단 | 출력 스키마·형식·필수 결과와 계산으로 확인되는 조건 검사 |
| 내용 생성·보완·요약 | 파일·네트워크·DB 등 기계적 실행 |
| 의미 검토와 수정 | 출력 계약 위반 감지와 오류 전달 |
판단 기준은 하나다.
이 결정에 문맥이나 의미 해석이 필요한가?
- 필요하다면 LLM이 결정한다.
- 형식·존재 여부·계산처럼 답이 기계적으로 정해진다면 스크립트가 처리한다.
작업 절차
- 코드를 쓰기 전에 다음 세 가지를 적는다.
- LLM이 판단하거나 생성할 내용
- 스크립트가 검사하고 실행할 내용
- 필수 결과의 출력 계약과 만들지 못했을 때 중단할 지점
if/else를 작성하기 전에 각 분기가 의미 판단인지 기계적 검사인지 분류한다.- 의미 판단이면 분기로 코딩하지 말고, 필요한 문맥과 출력 계약을 프롬프트에 넣어 LLM에 요청한다.
- 스크립트는 LLM 응답의 스키마·형식·필수 결과 존재와 계산으로 확인되는 조건만 검사한다.
- 출력 계약 위반을 발견하면 실제 오류 내용을 담아 LLM에 한 번만 다시 요청한다. 스크립트가 응답을 추정·보정하지 않는다.
- 재요청 결과도 출력 계약을 어기거나 필수 결과를 만들지 못하면 명시적 오류를 발생시키고 현재 작업을 중단한다. 불완전한 결과를 저장하거나 다음 단계로 넘기지 않는다.
- 구현 후 모든 분기를 다시 확인한다. 의미 판단이 스크립트에 남아 있으면 통과하지 못한다.
금지
- 의미적 동일성·적합성을 유사도·키워드·임계값 같은 휴리스틱으로 확정하지 않는다.
- 필수 결과가 없을 때 기본값·형 변환·폴백·예외 삼키기로 성공한 것처럼 처리하지 않는다.
- LLM 응답의 의미를 휴리스틱 후처리로 고쳐서 저장하지 않는다.
- 의미 판단에 필요한 정보를 스크립트가 임의로 만들어 넣지 않는다.
- 프롬프트에 있어야 할 판단 기준을 코드 분기로 옮기지 않는다.
경계 예시
- 잘못된 구현: 회사 이름이 일정 비율 이상 비슷하면 같은 회사로 저장한다.
- 올바른 구현: 스크립트는 식별자 불일치만 감지하고, 같은 회사인지 판단하는 데 필요한 정보를 LLM에 전달한다. LLM이 판단하지 못하면 저장하지 않고 오류로 중단한다.
통과 조건
- 모든 의미 판단을 LLM 호출까지 추적할 수 있다.
- 모든 코드 분기는 구조 검사나 기계적 실행으로 설명할 수 있다.
- 잘못된 LLM 응답을 스크립트가 정상 결과로 바꾸지 않는다.
- 필수 결과의 실패가 명시적 오류로 드러난다.
- 정상 응답과 필수 결과 누락 응답을 모두 검증한다.