CLAUDE.md 및 규칙), 스킬, 훅 등입니다.
settingSources를 생략하면 query()는 Claude Code CLI와 동일한 파일시스템 설정을 읽습니다: 사용자, 프로젝트 및 로컬 설정, CLAUDE.md 파일, .claude/ 스킬, 에이전트 및 명령입니다. 이 없이 실행하려면 settingSources: []를 전달하면 에이전트가 프로그래밍 방식으로 구성한 것으로만 제한됩니다. 관리형 정책 설정 및 전역 ~/.claude.json 구성은 이 옵션과 관계없이 읽혀집니다. settingSources가 제어하지 않는 것을 참조하세요.
각 기능이 수행하는 작업과 사용 시기에 대한 개념적 개요는 Claude Code 확장을 참조하세요.
settingSources로 파일시스템 설정 제어하기
설정 소스 옵션(Python의setting_sources, TypeScript의 settingSources)은 SDK가 로드하는 파일시스템 기반 설정을 제어합니다. 특정 소스를 선택하려면 명시적 목록을 전달하거나, 사용자, 프로젝트 및 로컬 설정을 비활성화하려면 빈 배열을 전달합니다.
이 예제는 settingSources를 ["user", "project"]로 설정하여 사용자 수준 및 프로젝트 수준 설정을 모두 로드합니다:
<cwd>는 cwd 옵션을 통해 전달하는 작업 디렉토리이거나, 설정되지 않은 경우 프로세스의 현재 디렉토리입니다. 전체 타입 정의는 SettingSource(TypeScript) 또는 SettingSource(Python)을 참조하세요.
settingSources를 생략하는 것은 ["user", "project", "local"]과 동일합니다.
cwd 옵션은 SDK가 프로젝트 수준 입력을 찾는 위치를 결정합니다. CLAUDE.md와 규칙은 <cwd>와 모든 상위 디렉토리에서 로드됩니다. 스킬은 <cwd>와 저장소 루트까지의 모든 상위 디렉토리에서 로드됩니다. 프로젝트 settings.json과 훅은 <cwd>/.claude/에서만 로드되며 상위 디렉토리 폴백이 없습니다.
settingSources가 제어하지 않는 것
settingSources는 사용자, 프로젝트 및 로컬 설정을 다룹니다. 몇 가지 입력은 해당 값과 관계없이 읽혀집니다:
프로젝트 지침(CLAUDE.md 및 규칙)
CLAUDE.md 파일 및 .claude/rules/*.md 파일은 에이전트에 프로젝트에 대한 지속적인 컨텍스트를 제공합니다: 코딩 규칙, 빌드 명령, 아키텍처 결정 및 지침입니다. settingSources에 "project"가 포함되면(위의 예제처럼), SDK는 세션 시작 시 이 파일들을 컨텍스트에 로드합니다. 그러면 에이전트는 모든 프롬프트에서 반복하지 않고도 프로젝트 규칙을 따릅니다.
CLAUDE.md 로드 위치
모든 수준은 누적됩니다: 프로젝트 및 사용자 CLAUDE.md 파일이 모두 존재하면 에이전트는 둘 다 봅니다. 수준 간에 하드 우선순위 규칙은 없습니다. 지침이 충돌하면 결과는 Claude가 해석하는 방식에 따라 달라집니다. 충돌하지 않는 규칙을 작성하거나 더 구체적인 파일에서 명시적으로 우선순위를 명시합니다(“이 프로젝트 지침은 충돌하는 모든 사용자 수준 기본값을 재정의합니다”).
CLAUDE.md 콘텐츠를 구조화하고 구성하는 방법은 Claude의 메모리 관리를 참조하세요.
스킬
스킬은 에이전트에 전문 지식과 호출 가능한 워크플로우를 제공하는 마크다운 파일입니다.CLAUDE.md(모든 세션에서 로드)와 달리 스킬은 필요에 따라 로드됩니다. 에이전트는 시작 시 스킬 설명을 받고 관련이 있을 때 전체 콘텐츠를 로드합니다.
스킬은 settingSources를 통해 파일시스템에서 발견됩니다. query()에서 skills 옵션을 생략하면 발견된 사용자 및 프로젝트 스킬이 활성화되고 Skill 도구를 사용할 수 있으며, CLI 동작과 일치합니다. 활성화된 스킬을 제어하려면 skills를 "all", 스킬 이름 목록 또는 모두 비활성화하려면 []로 전달합니다. skills가 설정되면 SDK는 Skill 도구를 allowedTools에 자동으로 추가합니다. 명시적 tools 목록도 전달하는 경우 Claude가 스킬을 호출할 수 있도록 해당 목록에 "Skill"을 포함하세요.
스킬은 파일시스템 아티팩트(
.claude/skills/<name>/SKILL.md)로 생성되어야 합니다. SDK에는 스킬을 등록하기 위한 프로그래밍 방식 API가 없습니다. 전체 세부 정보는 SDK의 에이전트 스킬을 참조하세요.훅
SDK는 훅을 정의하는 두 가지 방법을 지원하며, 이들은 나란히 실행됩니다:- 파일시스템 훅:
settings.json에 정의된 셸 명령,settingSources에 관련 소스가 포함될 때 로드됩니다. 이는 대화형 Claude Code 세션에 대해 구성하는 것과 동일한 훅입니다. - 프로그래밍 방식 훅:
query()에 직접 전달되는 콜백 함수입니다. 이들은 애플리케이션 프로세스에서 실행되며 구조화된 결정을 반환할 수 있습니다. 훅으로 실행 제어를 참조하세요.
.claude/settings.json에 이미 훅이 있고 settingSources: ["project"]를 설정하면 추가 구성 없이 SDK에서 해당 훅이 자동으로 실행됩니다.
훅 콜백은 도구 입력을 받고 결정 딕셔너리를 반환합니다. {}를 반환하면 도구가 진행되도록 허용합니다. 실행을 차단하려면 permissionDecision: "deny"와 permissionDecisionReason을 포함하는 hookSpecificOutput 객체를 반환합니다. 이유는 도구 결과로 Claude에 전송됩니다. 최상위 decision 및 reason 필드는 PreToolUse에 대해 더 이상 사용되지 않습니다. 전체 콜백 서명 및 반환 유형은 훅 가이드를 참조하세요.
어느 훅 유형을 사용할지
TypeScript SDK는 Python을 넘어
SessionStart, SessionEnd, TeammateIdle 및 TaskCompleted를 포함한 추가 훅 이벤트를 지원합니다. 전체 이벤트 호환성 표는 훅 가이드를 참조하세요.올바른 기능 선택하기
Agent SDK는 에이전트의 동작을 확장하는 여러 방법에 접근할 수 있게 합니다. 어느 것을 사용할지 확실하지 않으면 이 표는 일반적인 목표를 올바른 접근 방식에 매핑합니다.
활성화하는 모든 기능은 에이전트의 컨텍스트 윈도우에 추가됩니다. 기능별 비용 및 이 기능들이 함께 계층화되는 방식은 Extend Claude Code를 참조하세요.