diff --git a/src/features/claude-code-agent-loader/loader.ts b/src/features/claude-code-agent-loader/loader.ts index 0f6ef2150..407525687 100644 --- a/src/features/claude-code-agent-loader/loader.ts +++ b/src/features/claude-code-agent-loader/loader.ts @@ -78,8 +78,8 @@ export function loadUserAgents(): Record { return result } -export function loadProjectAgents(): Record { - const projectAgentsDir = join(process.cwd(), ".claude", "agents") +export function loadProjectAgents(directory?: string): Record { + const projectAgentsDir = join(directory ?? process.cwd(), ".claude", "agents") const agents = loadAgentsFromDir(projectAgentsDir, "project") const result: Record = {} diff --git a/src/features/claude-code-command-loader/loader.ts b/src/features/claude-code-command-loader/loader.ts index 4ce62c949..adf2cc4c1 100644 --- a/src/features/claude-code-command-loader/loader.ts +++ b/src/features/claude-code-command-loader/loader.ts @@ -114,8 +114,8 @@ export async function loadUserCommands(): Promise> { - const projectCommandsDir = join(process.cwd(), ".claude", "commands") +export async function loadProjectCommands(directory?: string): Promise> { + const projectCommandsDir = join(directory ?? process.cwd(), ".claude", "commands") const commands = await loadCommandsFromDir(projectCommandsDir, "project") return commandsToRecord(commands) } @@ -127,18 +127,18 @@ export async function loadOpencodeGlobalCommands(): Promise> { - const opencodeProjectDir = join(process.cwd(), ".opencode", "command") +export async function loadOpencodeProjectCommands(directory?: string): Promise> { + const opencodeProjectDir = join(directory ?? process.cwd(), ".opencode", "command") const commands = await loadCommandsFromDir(opencodeProjectDir, "opencode-project") return commandsToRecord(commands) } -export async function loadAllCommands(): Promise> { +export async function loadAllCommands(directory?: string): Promise> { const [user, project, global, projectOpencode] = await Promise.all([ loadUserCommands(), - loadProjectCommands(), + loadProjectCommands(directory), loadOpencodeGlobalCommands(), - loadOpencodeProjectCommands(), + loadOpencodeProjectCommands(directory), ]) return { ...projectOpencode, ...global, ...project, ...user } } diff --git a/src/plugin-handlers/agent-config-handler.ts b/src/plugin-handlers/agent-config-handler.ts index 3525f48af..c2c993ba6 100644 --- a/src/plugin-handlers/agent-config-handler.ts +++ b/src/plugin-handlers/agent-config-handler.ts @@ -84,7 +84,7 @@ export async function applyAgentConfig(params: { const includeClaudeAgents = params.pluginConfig.claude_code?.agents ?? true; const userAgents = includeClaudeAgents ? loadUserAgents() : {}; - const projectAgents = includeClaudeAgents ? loadProjectAgents() : {}; + const projectAgents = includeClaudeAgents ? loadProjectAgents(params.ctx.directory) : {}; const rawPluginAgents = params.pluginComponents.agents; const pluginAgents = Object.fromEntries( diff --git a/src/plugin-handlers/command-config-handler.ts b/src/plugin-handlers/command-config-handler.ts index 983c25a04..1ef73df3c 100644 --- a/src/plugin-handlers/command-config-handler.ts +++ b/src/plugin-handlers/command-config-handler.ts @@ -44,13 +44,13 @@ export async function applyCommandConfig(params: { configDir: params.ctx.directory, }), includeClaudeCommands ? loadUserCommands() : Promise.resolve({}), - includeClaudeCommands ? loadProjectCommands() : Promise.resolve({}), + includeClaudeCommands ? loadProjectCommands(params.ctx.directory) : Promise.resolve({}), loadOpencodeGlobalCommands(), - loadOpencodeProjectCommands(), + loadOpencodeProjectCommands(params.ctx.directory), includeClaudeSkills ? loadUserSkills() : Promise.resolve({}), - includeClaudeSkills ? loadProjectSkills() : Promise.resolve({}), + includeClaudeSkills ? loadProjectSkills(params.ctx.directory) : Promise.resolve({}), loadOpencodeGlobalSkills(), - loadOpencodeProjectSkills(), + loadOpencodeProjectSkills(params.ctx.directory), ]); params.config.command = { diff --git a/src/plugin/tool-registry.ts b/src/plugin/tool-registry.ts index 7236ddc48..14267fe0a 100644 --- a/src/plugin/tool-registry.ts +++ b/src/plugin/tool-registry.ts @@ -101,7 +101,7 @@ export function createToolRegistry(args: { getSessionID: getSessionIDForMcp, }) - const commands = discoverCommandsSync() + const commands = discoverCommandsSync(ctx.directory) const slashcommandTool = createSlashcommandTool({ commands, skills: skillContext.mergedSkills, diff --git a/src/tools/slashcommand/command-discovery.ts b/src/tools/slashcommand/command-discovery.ts index b44581af7..50be5d024 100644 --- a/src/tools/slashcommand/command-discovery.ts +++ b/src/tools/slashcommand/command-discovery.ts @@ -48,12 +48,12 @@ function discoverCommandsFromDir(commandsDir: string, scope: CommandScope): Comm return commands } -export function discoverCommandsSync(): CommandInfo[] { +export function discoverCommandsSync(directory?: string): CommandInfo[] { const configDir = getOpenCodeConfigDir({ binary: "opencode" }) const userCommandsDir = join(getClaudeConfigDir(), "commands") - const projectCommandsDir = join(process.cwd(), ".claude", "commands") + const projectCommandsDir = join(directory ?? process.cwd(), ".claude", "commands") const opencodeGlobalDir = join(configDir, "command") - const opencodeProjectDir = join(process.cwd(), ".opencode", "command") + const opencodeProjectDir = join(directory ?? process.cwd(), ".opencode", "command") const userCommands = discoverCommandsFromDir(userCommandsDir, "user") const opencodeGlobalCommands = discoverCommandsFromDir(opencodeGlobalDir, "opencode")