跳转到内容

Skills(技能)

OpenCorvus 基于 SKILL.md 的轻量扩展机制。

Skills 是 OpenCorvus 最轻量的扩展单元——一段带 YAML frontmatter 的 Markdown 文件,描述”在什么阶段、满足什么条件时,agent 应遵循哪些操作规则”。无需 TypeScript、无需编译,放进目录或从 URL 拉取即可。

源码:packages/opencorvus/src/skill/skill.tspackages/opencorvus/src/skill/manager.ts

1. Skill 结构

my-skill/
├── SKILL.md # 必需,frontmatter + 指令正文
└── references/ # 可选:参考资料

Frontmatter 字段(src/skill/skill.ts):

字段类型说明
namestring(必需)全局唯一 ID,被 permission 引用
descriptionstring(必需)一句话描述,告诉 agent 何时激活
platforms("windows"|"macos"|"linux")[]平台过滤,空数组 = 全平台
auto_detect.filesstring[]项目中存在这些文件时作为发现提示
auto_detect.depsstring[]package.json 中存在这些依赖时作为发现提示
auto_detect.task_signalsobject任务级信号:图片附件、非 Figma URL、Figma URL、package scripts、请求文本
prioritynumber多 skill 命中时的排序(大在前,默认 0)
required_toolsstring[]skill 预期可能需要的工具提示

2. 内置 Skills

随二进制打包(src/skill/skill.tsbuiltins 数组),只有一个

Skill用途
research-reportwebsearch 和按需 webfetch 产出带来源的 Markdown 调研报告

其他 skill 需要通过 skills.paths / skills.urls 显式加载。

内置 Skill 默认权限为 allowsrc/skill/manager.ts)。

3. 添加本地 Skill

方式 A:放到项目 .opencorvus/skill/<name>/SKILL.md 或全局 config 目录下,启动时自动扫描。

方式 B:兼容 Claude Code 布局,.claude/skills/.agents/skills/ 也会被发现(src/skill/skill.ts)。

方式 C:在 opencorvus.jsonc 中声明搜索路径:

{
"skills": {
"paths": ["./my-skills", "~/shared/skills", "/absolute/path/skills"],
},
}

路径下所有 **/SKILL.md 都会被加载(src/skill/skill.ts)。

4. 从远程 URL 加载

{
"skills": {
"urls": ["https://skills.example.com/my-pack/"],
},
}

加载流程(src/skill/discovery.ts):

  1. GET {url}/index.json 期望格式 { skills: [{ name, description, files[] }] }
  2. files 逐一下载到 <runtime-root>/cache/skills/<name>/
  3. 加载缓存下的 SKILL.md

内置 Skill Market 条目(src/skill/manager.ts):

ID来源信任等级
openai-skillsgithub.com/openai/skillsofficial
anthropic-skillsgithub.com/anthropics/skillsofficial
skills-shskills.shcurated
skillstoreskillstore.iocurated
skills-pubskills.pubcommunity

5. 通过 Git 安装

Terminal window
opencorvus skill install --git https://github.com/owner/repo.git
# 简写:opencorvus skill install owner/repo

Git 方式克隆到 <runtime-root>/config/skills-market/<slug>/ 并自动追加到 skills.paths.opencorvus-skill-source.json 记录来源(src/skill/manager.ts)。runtime root 遵循环境变量

6. Skill ↔ Agent 调用关系

Session 初始化时会提供 Skill Policy 与可用 skill 摘要。Agent 需要通过 skill 工具搜索或按精确名称加载 SKILL.md,然后执行其中的工作流。加载 skill 是会话历史中的可见工具调用。

auto_detect 仅作为发现 / 排序 / 后续 UI 辅助的元数据。Skill 正文通过可见的 skill 工具加载;required_tools 是 skill 搜索结果中的描述性提示;真正的证据要求由加载后的 skill 文档说明。

7. Permission 配置

{
"permission": {
"skill": {
"*": "ask",
"research-report": "allow",
"local-note": "deny",
},
},
}

推荐策略:内置 allow;社区来源 ask;含 scripts/ 目录的视为高风险(src/skill/manager.ts)。

8. 信任等级与风险

等级来源
builtin随二进制打包
officialopenai/skills 或 anthropics/skills
curatedskills.sh / skillstore.io
communityskills.pub
local本地路径
external.claude/.agents/ 目录发现

风险评估:目录含 scripts/ → 高风险;含 agents/references/ → 中等(src/skill/manager.ts)。

9. 禁用外部 Skills

Terminal window
OPENCORVUS_DISABLE_EXTERNAL_SKILLS=1
# 或
OPENCORVUS_DISABLE_CLAUDE_CODE_SKILLS=1

跳过 .claude/.agents/ 目录扫描,不影响 skills.pathsskills.urlssrc/flag/flag.ts)。