-
Notifications
You must be signed in to change notification settings - Fork 524
Open
Labels
enhancementNew feature or requestNew feature or request
Description
Problem
The .claude/ directory serves dual purposes:
- Claude Code CLI reads it for settings, permissions, and MCP server configuration
- Agent SDK reads it for skills/commands discovery (
.claude/commands/*.md,.claude/agents/*.md)
When building agents that need custom skills while running from directories where Claude Code CLI is also used, this creates confusion. Skills must be discoverable from the working directory's .claude/ path, often requiring symlinks.
Current Behavior
The SDK correctly isolates settings by default (setting_sources=None loads no settings), which is good. However, if you want to use custom commands/skills, they must exist in {cwd}/.claude/commands/ or {cwd}/.claude/agents/.
Workaround
Symlink the project's .claude/ into each session directory:
claude_symlink = session_path / ".claude"
project_claude = project_root / ".claude"
if project_claude.exists() and not claude_symlink.exists():
claude_symlink.symlink_to(project_claude)Proposed Solution
Add explicit path configuration for agent resources:
ClaudeAgentOptions(
# Explicit paths for agent resources (independent of setting_sources)
commands_path="/path/to/my/commands", # or list of paths
agents_path="/path/to/my/agents",
# Existing setting_sources continues to control CLI settings
setting_sources=None, # Still isolated from CLI settings
)This would:
- Decouple agent resource discovery from CLI settings
- Eliminate the need for symlinks
- Make it clear what is agent config vs CLI config
Alternatives Considered
- Document the symlink pattern - Works but feels like a workaround
- Subdirectory convention (e.g.,
.claude/agent/commands/) - Still couples to.claude/directory
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request