mirror of
https://github.com/siteboon/claudecodeui.git
synced 2026-05-17 01:22:45 +00:00
61 lines
1.9 KiB
TypeScript
61 lines
1.9 KiB
TypeScript
import os from 'node:os';
|
|
import path from 'node:path';
|
|
|
|
import { SkillsProvider } from '@/modules/providers/shared/skills/skills.provider.js';
|
|
import type { ProviderSkillSource } from '@/shared/types.js';
|
|
import {
|
|
addUniqueProviderSkillSource,
|
|
findTopmostGitRoot,
|
|
} from '@/shared/utils.js';
|
|
|
|
export class CodexSkillsProvider extends SkillsProvider {
|
|
constructor() {
|
|
super('codex');
|
|
}
|
|
|
|
protected async getSkillSources(workspacePath: string): Promise<ProviderSkillSource[]> {
|
|
const sources: ProviderSkillSource[] = [];
|
|
const seenRootDirs = new Set<string>();
|
|
const repoRoot = await findTopmostGitRoot(workspacePath);
|
|
|
|
addUniqueProviderSkillSource(sources, seenRootDirs, {
|
|
scope: 'repo',
|
|
rootDir: path.join(workspacePath, '.agents', 'skills'),
|
|
commandPrefix: '$',
|
|
});
|
|
|
|
if (repoRoot) {
|
|
// Codex checks repository skills at the launch folder, one folder above it,
|
|
// and the topmost git root; these can collapse to the same directory.
|
|
addUniqueProviderSkillSource(sources, seenRootDirs, {
|
|
scope: 'repo',
|
|
rootDir: path.join(path.dirname(workspacePath), '.agents', 'skills'),
|
|
commandPrefix: '$',
|
|
});
|
|
addUniqueProviderSkillSource(sources, seenRootDirs, {
|
|
scope: 'repo',
|
|
rootDir: path.join(repoRoot, '.agents', 'skills'),
|
|
commandPrefix: '$',
|
|
});
|
|
}
|
|
|
|
addUniqueProviderSkillSource(sources, seenRootDirs, {
|
|
scope: 'user',
|
|
rootDir: path.join(os.homedir(), '.agents', 'skills'),
|
|
commandPrefix: '$',
|
|
});
|
|
addUniqueProviderSkillSource(sources, seenRootDirs, {
|
|
scope: 'admin',
|
|
rootDir: path.join('/etc', 'codex', 'skills'),
|
|
commandPrefix: '$',
|
|
});
|
|
addUniqueProviderSkillSource(sources, seenRootDirs, {
|
|
scope: 'system',
|
|
rootDir: path.join(os.homedir(), '.codex', 'skills', '.system'),
|
|
commandPrefix: '$',
|
|
});
|
|
|
|
return sources;
|
|
}
|
|
}
|