export interface Skill { name: string; description: string; path: string; category?: string; source?: 'system' | 'global' | 'workspace'; metadata?: any; } /** 技能目录与来源:全局=OPENBOT_AGENT_DIR/skills,系统=项目根/skills,工作区=OPENBOT_WORKSPACE_DIR/xxx/skills */ export declare class SkillsService { /** 待扫描的目录列表 */ private skillPaths; constructor(); /** 指定工作区的 skills 目录绝对路径(受 OPENBOT_WORKSPACE_DIR 影响) */ getWorkspaceSkillsDir(workspaceName: string): string; /** 全局技能目录(受 OPENBOT_AGENT_DIR 影响,默认 ~/.openbot/agent/skills) */ getGlobalSkillsDir(): string; /** 仅返回全局技能(OPENBOT_AGENT_DIR/skills) */ getGlobalSkills(): Promise; /** 删除全局技能 */ deleteGlobalSkill(name: string): Promise; /** * 通过 npx skills add 安装技能到指定目录。 * @param url 安装地址(Git 简写、URL 或 owner/repo@skill) * @param options.scope 'global' 安装到 OPENBOT_AGENT_DIR/skills;'workspace' 安装到指定工作区的 skills * @param options.workspace 当 scope 为 'workspace' 时的工作区名(对应 OPENBOT_WORKSPACE_DIR//skills) */ installSkillByUrl(url: string, options?: { scope?: 'global' | 'workspace'; workspace?: string; }): Promise<{ stdout: string; stderr: string; installDir: string; }>; /** * 从本地目录安装技能:将指定目录复制到目标 skills 目录。 * @param localPath 本地技能目录绝对路径(须包含 SKILL.md) * @param options.scope 'global' 安装到全局;'workspace' 安装到指定工作区 * @param options.workspace 当 scope 为 'workspace' 时的工作区名 */ installSkillFromPath(localPath: string, options?: { scope?: 'global' | 'workspace'; workspace?: string; }): Promise<{ installDir: string; name: string; }>; getSkills(): Promise; getSkill(name: string): Promise; getSkillContent(name: string): Promise; /** 仅返回指定工作区下的技能(文件目录管理,不涉及 SQLite) */ getSkillsForWorkspace(workspaceName: string): Promise; /** 从 skill.json 或 package.json 解析出 Skill(兼容无 SKILL.md 的 npm 风格技能目录) */ private parseSkillJson; getSkillContentForWorkspace(workspaceName: string, name: string): Promise; /** 在工作区下新增技能(创建目录 + SKILL.md) */ addSkill(workspaceName: string, name: string, options?: { description?: string; content?: string; }): Promise; /** 删除工作区下的技能目录;主智能体(default)下的 Skill 不可删除 */ deleteSkill(workspaceName: string, name: string): Promise; private parseSkillFile; }