feat: 添加 Skills 系统支持可复用提示模板
- 新增 Skill 类型定义和加载器,支持 YAML/JSON/Markdown 格式 - 实现 Skill 注册表,支持搜索、分类和优先级覆盖 - 添加 8 个内置 Skills: code-review, explain-code, generate-docs 等 - 创建 skill 和 skill_search 工具供 Agent 调用 - 支持从用户目录和项目目录加载自定义 Skills - 添加完整的单元测试覆盖
This commit is contained in:
@@ -0,0 +1,109 @@
|
||||
/**
|
||||
* Skill 系统类型定义
|
||||
*
|
||||
* Skill 是可复用的提示模板,类似于 Claude Code 的 Skills 功能。
|
||||
* 与 Agent 不同,Skill 不是独立的执行单元,而是预定义的提示模板,
|
||||
* 可以被 Agent 调用来执行特定任务。
|
||||
*/
|
||||
|
||||
/**
|
||||
* Skill 参数定义
|
||||
*/
|
||||
export interface SkillParameter {
|
||||
/** 参数类型 */
|
||||
type: 'string' | 'number' | 'boolean' | 'array' | 'object';
|
||||
/** 参数描述 */
|
||||
description: string;
|
||||
/** 是否必需 */
|
||||
required?: boolean;
|
||||
/** 默认值 */
|
||||
default?: unknown;
|
||||
/** 枚举值(仅 string 类型) */
|
||||
enum?: string[];
|
||||
}
|
||||
|
||||
/**
|
||||
* Skill 定义
|
||||
*/
|
||||
export interface Skill {
|
||||
/** Skill 唯一标识 */
|
||||
name: string;
|
||||
/** Skill 显示名称 */
|
||||
displayName?: string;
|
||||
/** Skill 描述 */
|
||||
description: string;
|
||||
/** Skill 分类 */
|
||||
category?: string;
|
||||
/** 提示模板(支持变量插值 {{variable}}) */
|
||||
promptTemplate: string;
|
||||
/** Skill 参数定义 */
|
||||
parameters?: Record<string, SkillParameter>;
|
||||
/** 关键词(用于搜索) */
|
||||
keywords?: string[];
|
||||
/** 来源(内置/用户定义/项目) */
|
||||
source: 'builtin' | 'user' | 'project';
|
||||
/** 来源路径(用户定义或项目 Skill 的文件路径) */
|
||||
sourcePath?: string;
|
||||
/** 是否启用 */
|
||||
enabled?: boolean;
|
||||
/** 版本 */
|
||||
version?: string;
|
||||
/** 作者 */
|
||||
author?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* Skill 执行上下文
|
||||
*/
|
||||
export interface SkillContext {
|
||||
/** 当前工作目录 */
|
||||
workdir: string;
|
||||
/** 额外的上下文变量 */
|
||||
variables?: Record<string, string>;
|
||||
}
|
||||
|
||||
/**
|
||||
* Skill 执行结果
|
||||
*/
|
||||
export interface SkillExecutionResult {
|
||||
/** 是否成功 */
|
||||
success: boolean;
|
||||
/** 渲染后的提示 */
|
||||
prompt?: string;
|
||||
/** 错误信息 */
|
||||
error?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* Skill 文件格式(YAML/JSON)
|
||||
*/
|
||||
export interface SkillFile {
|
||||
/** 文件版本 */
|
||||
version?: string;
|
||||
/** Skill 定义 */
|
||||
skill: Omit<Skill, 'source' | 'sourcePath'>;
|
||||
}
|
||||
|
||||
/**
|
||||
* Skill 搜索结果
|
||||
*/
|
||||
export interface SkillSearchResult {
|
||||
/** Skill */
|
||||
skill: Skill;
|
||||
/** 匹配分数 */
|
||||
score: number;
|
||||
/** 匹配原因 */
|
||||
matchReason: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* Skill 注册表配置
|
||||
*/
|
||||
export interface SkillRegistryConfig {
|
||||
/** 用户 Skills 目录 */
|
||||
userSkillsDir?: string;
|
||||
/** 项目 Skills 目录 */
|
||||
projectSkillsDir?: string;
|
||||
/** 是否自动加载 */
|
||||
autoLoad?: boolean;
|
||||
}
|
||||
Reference in New Issue
Block a user