(cwd: string)
| 83 | |
| 84 | /** Extra skill roots contributed by Claude Code, lowest-precedence first. */ |
| 85 | export async function claudeCodeSkillDirs(cwd: string): Promise<ClaudeAssetDir[]> { |
| 86 | if (disabled()) return []; |
| 87 | const dirs: ClaudeAssetDir[] = []; |
| 88 | try { |
| 89 | for (const p of await relevantPluginPaths(cwd)) { |
| 90 | dirs.push({ dir: path.join(p.path, 'skills'), origin: 'plugin', plugin: p.name }); |
| 91 | } |
| 92 | } catch (e: any) { |
| 93 | logger.debug('claudeCodeSkillDirs: plugin scan failed', { err: e?.message }); |
| 94 | } |
| 95 | dirs.push({ dir: path.join(claudeHome(), 'skills'), origin: 'user' }); |
| 96 | dirs.push({ dir: path.join(cwd, '.claude', 'skills'), origin: 'project' }); |
| 97 | return dirs; |
| 98 | } |
| 99 | |
| 100 | /** Extra command roots contributed by Claude Code, lowest-precedence first. */ |
| 101 | export async function claudeCodeCommandDirs(cwd: string): Promise<ClaudeAssetDir[]> { |
no test coverage detected