mirror of
https://github.com/siteboon/claudecodeui.git
synced 2026-06-21 08:32:04 +08:00
Users need one settings surface to discover and install skills without manually navigating provider-specific directories. Add provider-backed global skill installation for Claude, Codex, Gemini, and Cursor, while keeping OpenCode read-only because it reuses other providers' skill locations. Add a responsive Skills settings tab with scoped discovery, search, refresh controls, markdown and folder uploads, upload feedback, and overflow-safe layouts. Validate bundled skill files and paths before writing them, preserve scripts and assets, and cover provider discovery and installation behavior with tests.
31 lines
859 B
TypeScript
31 lines
859 B
TypeScript
import { providerRegistry } from '@/modules/providers/provider.registry.js';
|
|
import type {
|
|
ProviderSkill,
|
|
ProviderSkillCreateInput,
|
|
ProviderSkillListOptions,
|
|
} from '@/shared/types.js';
|
|
|
|
export const providerSkillsService = {
|
|
/**
|
|
* Lists normalized skills visible to one provider.
|
|
*/
|
|
async listProviderSkills(
|
|
providerName: string,
|
|
options?: ProviderSkillListOptions,
|
|
): Promise<ProviderSkill[]> {
|
|
const provider = providerRegistry.resolveProvider(providerName);
|
|
return provider.skills.listSkills(options);
|
|
},
|
|
|
|
/**
|
|
* Writes one or more global skills for one provider.
|
|
*/
|
|
async addProviderSkills(
|
|
providerName: string,
|
|
input: ProviderSkillCreateInput,
|
|
): Promise<ProviderSkill[]> {
|
|
const provider = providerRegistry.resolveProvider(providerName);
|
|
return provider.skills.addSkills(input);
|
|
},
|
|
};
|