Skill Composition Model
Skill = Tool 조합 + 조건 + 순서 + 파라미터 바인딩
세 가지 조합 패턴
패턴 1 — Sequential (파이프라인)
앞 Tool의 출력이 다음 Tool의 입력으로 연결.
download_file(url)
↓ local_path
convert_to_md(local_path)
↓ md_path
index_to_rag(md_path)
패턴 2 — Parallel
서로 의존성 없는 Tool을 동시 실행.
search("transformer") search("attention")
↓ ↓
results_1 results_2
↓ merge
combined_results
패턴 3 — Conditional
결과에 따라 다음 행동이 달라짐.
login()
↓
success? → search()
failure? → notify_user() → stop
사용자별 커스터마이징
Tool 조합(구조)은 공유, 파라미터 값은 사용자별로 다름.
skill: research_and_save
steps:
- tool: download_file
params:
save_path: "{user_download_path}" ← 사용자마다 다름
- tool: convert_to_md
condition: "user.wants_md == True" ← 사용자 설정
- tool: index_to_rag
condition: "user.wants_rag == True"
역할 분담
개발자: Tool 구현 + Skill 템플릿 (구조/순서)
사용자: 파라미터 바인딩 + 트리거 조건
LLM: Skill 선택 + 판단 처리 + 에러 대응
Skill Composition이 해결하는 것
A: 그냥 다운로드
B: 다운로드 + 특정 폴더
C: 다운로드 + MD + RAG
→ 동일한 Skill 구조 + 사용자별 파라미터
→ 코드 한 벌로 모든 케이스 커버
관련 개념
- tool-vs-skill-design — Tool/Skill 설계 원칙
- tool-analysis-methodology — Tool 분석 방법
- skill-selection-mechanism — LLM이 Skill 선택하는 방법
- tool-registry-architecture — Tool Registry 구조